This file contains checklists for various tasks. Table of contents ================= 1. Checklist for creating Yosys releases 2. Checklist for adding internal cell types 1. Checklist for creating Yosys releases ======================================== Update the CHANGELOG file: cd ~yosys gitk & vi CHANGELOG Run all tests with "make config-{clang-debug,gcc-debug,gcc-4.7,release}": cd ~yosys make clean make test vloghtb make install cd ~yosys-bigsim make clean make full cd ~vloghammer make purge make gen_issues gen_samples make SYN_LIST="yosys" SIM_LIST="icarus yosim verilator" FULL=1 world chromium-browser report.html Then with default config setting: cd ~yosys ./yosys -p 'proc; show' tests/simple/fiedler-cooley.v ./yosys -p 'proc; opt; show' tests/simple/fiedler-cooley.v cd ~yosys make manual - sanity check the figures in the appnotes and presentation - if there are any odd things -> investigate - make cosmetic changes to the .tex files if necessary Also with default config setting: cd ~yosys/techlibs/cmos bash testbench.sh cd ~yosys/techlibs/xilinx/example_sim_counter bash run_sim.sh cd ~yosys/techlibs/xilinx/example_mojo_counter bash example.sh Finally if a current verific library is available: cd ~yosys cat frontends/verific/build_amd64.txt - follow instructions cd frontends/verific ../../yosys test_navre.ys Release candiate: - create branch yosys-x.y.z-rc and push to github - contact the usual suspects per mail and ask them to test - post on the reddit and ask people to test - commit KISS fixes to the -rc branch if necessary Release: - set YOSYS_VER to x.y.z in Makefile - update version string in CHANGELOG git commit -am "Yosys x.y.z" - push tag to github - post changelog on github - post short release note on reddit - delete -rc branch from github Updating the website: cd ~yosys make manual make install - update pdf files on the website cd ~yosys-web make update_cmd make update_show git commit -am update make push In master branch: git merge {release-tag} - set version to x.y.z+ in Makefile - add section "Yosys x.y.z .. x.y.z+" to CHANGELOG git commit --amend -am "Yosys x.y.z+" 2. Checklist for adding internal cell types =========================================== Things to do right away: - Add to kernel/celltypes.h (incl. eval() handling for non-mem cells) - Add to InternalCellChecker::check() in kernel/rtlil.cc - Add to techlibs/common/simlib.v - Add to techlibs/common/techmap.v Things to do after finalizing the cell interface: - Add support to kernel/satgen.h for the new cell type - Add to manual/CHAPTER_CellLib.tex (or just add a fixme to the bottom) - Maybe add support to the verilog backend for dumping such cells as expression id='n1' href='#n1'>1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96
--  String table.
--  Copyright (C) 2002, 2003, 2004, 2005 Tristan Gingold
--
--  GHDL is free software; you can redistribute it and/or modify it under
--  the terms of the GNU General Public License as published by the Free
--  Software Foundation; either version 2, or (at your option) any later
--  version.
--
--  GHDL is distributed in the hope that it will be useful, but WITHOUT ANY
--  WARRANTY; without even the implied warranty of MERCHANTABILITY or
--  FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
--  for more details.
--
--  You should have received a copy of the GNU General Public License
--  along with GHDL; see the file COPYING.  If not, write to the Free
--  Software Foundation, 59 Temple Place - Suite 330, Boston, MA
--  02111-1307, USA.
with Tables;

package body Str_Table is
   --  Be sure the elements are packed.
   type El_Nat8 is new Nat8;
   for El_Nat8'Size use 8;

   package String8_Table is new Tables
     (Table_Index_Type => String8_Id,
      Table_Component_Type => El_Nat8,
      Table_Low_Bound => Null_String8 + 1,
      Table_Initial => 1024);

   Cur_String8 : String8_Id := 0;

   function Create_String8 return String8_Id is
   begin
      Cur_String8 := String8_Table.Last + 1;
      return Cur_String8;
   end Create_String8;

   procedure Append_String8 (El : Nat8) is
   begin
      String8_Table.Append (El_Nat8 (El));
   end Append_String8;

   procedure Append_String8_Char (El : Character) is
   begin
      Append_String8 (Character'Pos (El));
   end Append_String8_Char;

   procedure Append_String8_String (S : String) is
   begin
      for I in S'Range loop
         Append_String8_Char (S (I));
      end loop;
   end Append_String8_String;

   procedure Resize_String8 (Len : Nat32) is
   begin
      String8_Table.Set_Last (Cur_String8 + String8_Id (Len) - 1);
   end Resize_String8;

   function Element_String8 (Id : String8_Id; N : Pos32) return Nat8 is
   begin
      return Nat8 (String8_Table.Table (Id + String8_Id (N - 1)));
   end Element_String8;

   procedure Set_Element_String8 (Id : String8_Id; N : Pos32; Val : Nat8) is
   begin
      String8_Table.Table (Id + String8_Id (N - 1)) := El_Nat8 (Val);
   end Set_Element_String8;

   function Char_String8 (Id : String8_Id; N : Pos32) return Character is
   begin
      return Character'Val (Element_String8 (Id, N));
   end Char_String8;

   function String_String8 (Id : String8_Id; Len : Nat32) return String
   is
      Res : String (1 .. Natural (Len));
   begin
      for I in 1 .. Len loop
         Res (Natural (I)) := Char_String8 (Id, I);
      end loop;
      return Res;
   end String_String8;

   function String8_Address (Id : String8_Id) return System.Address is
   begin
      return String8_Table.Table (Id)'Address;
   end String8_Address;

   procedure Initialize is
   begin
      String8_Table.Free;
      String8_Table.Init;
   end Initialize;
end Str_Table;