├── architecture ├── z1000 │ └── techlib │ │ ├── tech_dsp_empty.v │ │ ├── tech_bram_empty.v │ │ ├── bram_memory_map_empty.txt │ │ └── tech_flops.v ├── z1010 │ ├── techlib │ │ ├── tech_dsp_empty.v │ │ ├── tech_bram_empty.v │ │ ├── bram_memory_map_empty.txt │ │ └── .tech_flops.v.swp │ ├── dsp │ │ ├── bare_mult_tech_dsp.v │ │ ├── mae_tech_dsp.v │ │ ├── tech_dsp.v │ │ └── zeroasic_dsp_map.v │ └── bram │ │ ├── memory_libmap.txt │ │ ├── bram_memory_map.txt │ │ └── bram_memory_map_with_init.txt ├── CMakeLists.txt └── z1060 │ ├── dsp │ ├── bare_mult_tech_dsp.v │ ├── mae_tech_dsp.v │ ├── tech_dsp.v │ └── zeroasic_dsp_map.v │ ├── techlib │ └── tech_flops.v │ └── bram │ └── bram_memory_map.txt ├── .gitignore ├── src ├── version.h.in ├── ff_models │ ├── dff.v │ ├── dffe.v │ ├── dffh.v │ ├── dffl.v │ ├── dffeh.v │ ├── dffel.v │ ├── dffr.v │ ├── dffs.v │ ├── dffes.v │ ├── dffer.v │ ├── dffhl.v │ └── dffehl.v ├── abc_scripts │ ├── LUT4 │ │ ├── V2 │ │ │ ├── default_lut4.scr │ │ │ ├── huge_lut4.scr │ │ │ ├── fast_lut4.scr │ │ │ ├── area_lut4.scr │ │ │ ├── delay_lut4.scr │ │ │ └── small_area_lut4.scr │ │ ├── BEST │ │ │ ├── huge_lut4.scr │ │ │ ├── fast_lut4.scr │ │ │ ├── area_lut4.scr │ │ │ ├── delay_lut4.scr │ │ │ ├── small_delay_lut4.scr │ │ │ ├── small_area_lut4.scr │ │ │ └── tiny_area_lut4.scr │ │ ├── V1 │ │ │ ├── huge_lut4.scr │ │ │ ├── fast_lut4.scr │ │ │ ├── default_lut4.scr │ │ │ ├── area_lut4.scr │ │ │ ├── delay_lut4.scr │ │ │ ├── small_delay_lut4.scr │ │ │ ├── small_area_lut4.scr │ │ │ └── tiny_area_lut4.scr │ │ ├── BASIC │ │ │ ├── area_lut4.scr │ │ │ ├── tiny_area_lut4.scr │ │ │ ├── small_area_lut4.scr │ │ │ ├── huge_lut4.scr │ │ │ └── fast_lut4.scr │ │ ├── V3 │ │ │ ├── huge_lut4.scr │ │ │ ├── fast_lut4.scr │ │ │ ├── area_lut4.scr │ │ │ └── delay_lut4.scr │ │ ├── V4 │ │ │ ├── huge_lut4.scr │ │ │ ├── fast_lut4.scr │ │ │ ├── area_lut4.scr │ │ │ ├── delay_lut4.scr │ │ │ └── small_area_lut4.scr │ │ ├── V5 │ │ │ ├── huge_lut4.scr │ │ │ ├── fast_lut4.scr │ │ │ ├── area_lut4.scr │ │ │ └── delay_lut4.scr │ │ └── V6 │ │ │ ├── huge_lut4.scr │ │ │ ├── fast_lut4.scr │ │ │ ├── area_lut4.scr │ │ │ └── delay_lut4.scr │ ├── LUT5 │ │ └── BEST │ │ │ ├── huge_lut5.scr │ │ │ ├── fast_lut5.scr │ │ │ ├── area_lut5.scr │ │ │ ├── small_delay_lut5.scr │ │ │ ├── delay_lut5.scr │ │ │ ├── small_area_lut5.scr │ │ │ └── tiny_area_lut5.scr │ └── LUT6 │ │ ├── V1 │ │ ├── default_lut6.scr │ │ ├── huge_lut6.scr │ │ ├── fast_lut6.scr │ │ ├── area_lut6.scr │ │ └── small_area_lut6.scr │ │ ├── V2 │ │ ├── default_lut6.scr │ │ ├── huge_lut6.scr │ │ ├── fast_lut6.scr │ │ └── area_lut6.scr │ │ ├── V3 │ │ ├── default_lut6.scr │ │ ├── huge_lut6.scr │ │ ├── fast_lut6.scr │ │ ├── area_lut6.scr │ │ └── delay_lut6.scr │ │ ├── V4 │ │ ├── huge_lut6.scr │ │ ├── fast_lut6.scr │ │ └── area_lut6.scr │ │ ├── V5 │ │ ├── huge_lut6.scr │ │ ├── fast_lut6.scr │ │ ├── area_lut6.scr │ │ └── delay_lut6.scr │ │ ├── V6 │ │ ├── huge_lut6.scr │ │ ├── fast_lut6.scr │ │ ├── area_lut6.scr │ │ └── delay_lut6.scr │ │ ├── V7 │ │ ├── huge_lut6.scr │ │ ├── fast_lut6.scr │ │ ├── area_lut6.scr │ │ └── delay_lut6.scr │ │ ├── V8 │ │ ├── huge_lut6.scr │ │ ├── fast_lut6.scr │ │ ├── area_lut6.scr │ │ └── delay_lut6.scr │ │ └── BEST │ │ ├── huge_lut6.scr │ │ ├── fast_lut6.scr │ │ ├── area_lut6.scr │ │ ├── tiny_delay_lut6.scr │ │ ├── tiny_area_lut6.scr │ │ └── delay_lut6.scr ├── ram_models │ └── RAM64x12.v ├── config_file_examples │ ├── config_mae.json │ ├── config_xc7.json │ ├── config_microchip_no_pack.json │ └── config_microchip.json ├── lut_models │ └── LUTs.v ├── CMakeLists.txt ├── zsimplemap.h ├── load_models.cc └── zqcsat.h ├── utils └── README.md ├── tests ├── unit │ ├── data │ │ ├── z1000 │ │ │ ├── ffs │ │ │ │ ├── dff.v │ │ │ │ ├── dffe.v │ │ │ │ ├── dffr.v │ │ │ │ ├── dffs.v │ │ │ │ ├── dffes.v │ │ │ │ ├── dffer.v │ │ │ │ ├── dffrs.v │ │ │ │ └── dffers.v │ │ │ ├── z1000.json │ │ │ └── z1000_abspath.json │ │ └── z1010 │ │ │ ├── ffs │ │ │ ├── dff.v │ │ │ ├── dffe.v │ │ │ ├── dffr.v │ │ │ ├── dffs.v │ │ │ ├── dffes.v │ │ │ ├── dffer.v │ │ │ ├── dffrs.v │ │ │ └── dffers.v │ │ │ ├── mult18x18_DSP48.v │ │ │ ├── z1010.json │ │ │ ├── z1010_abspath.json │ │ │ └── bram_memory_map.txt │ ├── check_commands.ys │ ├── heartbeat-z1000-hardcode.ys │ ├── heartbeat-z1010-hardcode.ys │ ├── heartbeat-z1000-config.ys │ ├── heartbeat-z1010-config.ys │ ├── heartbeat-z1010-config-abspath.ys │ └── heartbeat-z1000-config-abspath.ys └── CMakeLists.txt ├── cmake ├── GitRevision.cmake └── PMGen.cmake ├── .github └── workflows │ ├── cache_maintenance.yml │ └── build.yml └── CMakeLists.txt /architecture/z1000/techlib/tech_dsp_empty.v: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /architecture/z1010/techlib/tech_dsp_empty.v: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /architecture/z1000/techlib/tech_bram_empty.v: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /architecture/z1010/techlib/tech_bram_empty.v: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /architecture/z1000/techlib/bram_memory_map_empty.txt: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /architecture/z1010/techlib/bram_memory_map_empty.txt: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | .d 2 | .o 3 | build/ 4 | netlist_synth_fpga.verilog 5 | -------------------------------------------------------------------------------- /src/version.h.in: -------------------------------------------------------------------------------- 1 | 2 | #pragma once 3 | 4 | #define YOSYS_SYN_REVISION "@YOSYS_SYN_REVISION@" 5 | -------------------------------------------------------------------------------- /architecture/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | include(PMGen) 2 | 3 | pmgen_lib( 4 | NAME zeroasic_dsp 5 | PMG_FILE z1010/dsp/zeroasic_dsp.pmg 6 | ) 7 | -------------------------------------------------------------------------------- /architecture/z1010/techlib/.tech_flops.v.swp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zeroasiccorp/wildebeest/HEAD/architecture/z1010/techlib/.tech_flops.v.swp -------------------------------------------------------------------------------- /utils/README.md: -------------------------------------------------------------------------------- 1 | We have the 'pmgen.py' already here but in case we would need to get it back here is 2 | how. 3 | wget -nc -O pmgen.py https://raw.githubusercontent.com/YosysHQ/yosys/master/passes/pmgen/pmgen.py 4 | -------------------------------------------------------------------------------- /src/ff_models/dff.v: -------------------------------------------------------------------------------- 1 | module dff(D,clk,Q); 2 | input D; // Data input 3 | input clk; // clock input 4 | output reg Q; // output Q 5 | 6 | always @(posedge clk) 7 | 8 | begin 9 | Q <= D; 10 | end 11 | endmodule 12 | -------------------------------------------------------------------------------- /tests/unit/data/z1000/ffs/dff.v: -------------------------------------------------------------------------------- 1 | module dff(D,clk,Q); 2 | input D; // Data input 3 | input clk; // clock input 4 | output reg Q; // output Q 5 | 6 | always @(posedge clk) 7 | 8 | begin 9 | Q <= D; 10 | end 11 | endmodule 12 | -------------------------------------------------------------------------------- /tests/unit/data/z1010/ffs/dff.v: -------------------------------------------------------------------------------- 1 | module dff(D,clk,Q); 2 | input D; // Data input 3 | input clk; // clock input 4 | output reg Q; // output Q 5 | 6 | always @(posedge clk) 7 | 8 | begin 9 | Q <= D; 10 | end 11 | endmodule 12 | -------------------------------------------------------------------------------- /src/ff_models/dffe.v: -------------------------------------------------------------------------------- 1 | module dffe(D,clk,E,Q); 2 | input D; // Data input 3 | input clk; // clock input 4 | input E; // enable 5 | output reg Q; // output Q 6 | 7 | always @(posedge clk) 8 | 9 | begin 10 | if (E == 1'b1) begin 11 | Q <= D; 12 | end 13 | end 14 | endmodule 15 | -------------------------------------------------------------------------------- /tests/unit/data/z1000/ffs/dffe.v: -------------------------------------------------------------------------------- 1 | module dffe(D,clk,E,Q); 2 | input D; // Data input 3 | input clk; // clock input 4 | input E; // enable 5 | output reg Q; // output Q 6 | 7 | always @(posedge clk) 8 | 9 | begin 10 | if (E == 1'b1) begin 11 | Q <= D; 12 | end 13 | end 14 | endmodule 15 | -------------------------------------------------------------------------------- /tests/unit/data/z1010/ffs/dffe.v: -------------------------------------------------------------------------------- 1 | module dffe(D,clk,E,Q); 2 | input D; // Data input 3 | input clk; // clock input 4 | input E; // enable 5 | output reg Q; // output Q 6 | 7 | always @(posedge clk) 8 | 9 | begin 10 | if (E == 1'b1) begin 11 | Q <= D; 12 | end 13 | end 14 | endmodule 15 | -------------------------------------------------------------------------------- /src/ff_models/dffh.v: -------------------------------------------------------------------------------- 1 | module dffh(D,clk,H,Q); 2 | input D; 3 | input clk; 4 | input H; 5 | output reg Q; 6 | 7 | always @(posedge clk) 8 | 9 | begin 10 | if (H == 1'b0) begin // sync. set active low 11 | Q <= 1'b1; 12 | end 13 | else begin 14 | Q <= D; 15 | end 16 | end 17 | 18 | endmodule 19 | -------------------------------------------------------------------------------- /src/ff_models/dffl.v: -------------------------------------------------------------------------------- 1 | module dffl(D,clk,L,Q); 2 | input D; 3 | input clk; 4 | input L; 5 | output reg Q; 6 | 7 | always @(posedge clk) 8 | 9 | begin 10 | if (L == 1'b0) begin // sync. reset active low 11 | Q <= 1'b0; 12 | end 13 | else begin 14 | Q <= D; 15 | end 16 | end 17 | 18 | endmodule 19 | -------------------------------------------------------------------------------- /src/ff_models/dffeh.v: -------------------------------------------------------------------------------- 1 | module dffeh(D,clk,E,H,Q); 2 | input D; 3 | input clk; 4 | input E; 5 | input H; 6 | output reg Q; 7 | 8 | always @(posedge clk) 9 | 10 | begin 11 | if (H == 1'b0) begin // sync. set active low 12 | Q <= 1'b1; 13 | end 14 | else if (E == 1'b1) begin 15 | Q <= D; 16 | end 17 | end 18 | 19 | endmodule 20 | -------------------------------------------------------------------------------- /src/ff_models/dffel.v: -------------------------------------------------------------------------------- 1 | module dffel(D,clk,E,L,Q); 2 | input D; 3 | input clk; 4 | input E; 5 | input L; 6 | output reg Q; 7 | 8 | always @(posedge clk) 9 | 10 | begin 11 | if (L == 1'b0) begin // sync. reset active low 12 | Q <= 1'b0; 13 | end 14 | else if (E == 1'b1) begin 15 | Q <= D; 16 | end 17 | end 18 | 19 | endmodule 20 | -------------------------------------------------------------------------------- /src/ff_models/dffr.v: -------------------------------------------------------------------------------- 1 | module dffr(D,clk,R,Q); 2 | input D; // Data input 3 | input clk; // clock input 4 | input R; // reset input 5 | output reg Q; // output Q 6 | 7 | always @(posedge clk or negedge R) 8 | 9 | begin 10 | if (R == 1'b0) begin // reset active low 11 | Q <= 1'b0; 12 | end 13 | else begin 14 | Q <= D; 15 | end 16 | end 17 | endmodule 18 | -------------------------------------------------------------------------------- /src/ff_models/dffs.v: -------------------------------------------------------------------------------- 1 | module dffs(D,clk,S,Q); 2 | input D; // Data input 3 | input clk; // clock input 4 | input S; // reset input 5 | output reg Q; // output Q 6 | 7 | always @(posedge clk or negedge S) 8 | 9 | begin 10 | if (S == 1'b0) begin // set active low 11 | Q <= 1'b1; 12 | end 13 | else begin 14 | Q <= D; 15 | end 16 | end 17 | endmodule 18 | -------------------------------------------------------------------------------- /tests/unit/data/z1000/ffs/dffr.v: -------------------------------------------------------------------------------- 1 | module dffr(D,clk,R,Q); 2 | input D; // Data input 3 | input clk; // clock input 4 | input R; // reset input 5 | output reg Q; // output Q 6 | 7 | always @(posedge clk or negedge R) 8 | 9 | begin 10 | if (R == 1'b0) begin // reset active low 11 | Q <= 1'b0; 12 | end 13 | else begin 14 | Q <= D; 15 | end 16 | end 17 | endmodule 18 | -------------------------------------------------------------------------------- /tests/unit/data/z1000/ffs/dffs.v: -------------------------------------------------------------------------------- 1 | module dffs(D,clk,S,Q); 2 | input D; // Data input 3 | input clk; // clock input 4 | input S; // set input 5 | output reg Q; // output Q 6 | 7 | always @(posedge clk or negedge S) 8 | 9 | begin 10 | if (S == 1'b0) begin // set active low 11 | Q <= 1'b1; 12 | end 13 | else begin 14 | Q <= D; 15 | end 16 | end 17 | endmodule 18 | -------------------------------------------------------------------------------- /tests/unit/data/z1010/ffs/dffr.v: -------------------------------------------------------------------------------- 1 | module dffr(D,clk,R,Q); 2 | input D; // Data input 3 | input clk; // clock input 4 | input R; // reset input 5 | output reg Q; // output Q 6 | 7 | always @(posedge clk or negedge R) 8 | 9 | begin 10 | if (R == 1'b0) begin // reset active low 11 | Q <= 1'b0; 12 | end 13 | else begin 14 | Q <= D; 15 | end 16 | end 17 | endmodule 18 | -------------------------------------------------------------------------------- /tests/unit/data/z1010/ffs/dffs.v: -------------------------------------------------------------------------------- 1 | module dffs(D,clk,S,Q); 2 | input D; // Data input 3 | input clk; // clock input 4 | input S; // set input 5 | output reg Q; // output Q 6 | 7 | always @(posedge clk or negedge S) 8 | 9 | begin 10 | if (S == 1'b0) begin // set active low 11 | Q <= 1'b1; 12 | end 13 | else begin 14 | Q <= D; 15 | end 16 | end 17 | endmodule 18 | -------------------------------------------------------------------------------- /src/ff_models/dffes.v: -------------------------------------------------------------------------------- 1 | module dffes(D,clk,E,S,Q); 2 | input D; // Data input 3 | input clk; // clock input 4 | input E; // enable 5 | input S; // set input 6 | output reg Q; // output Q 7 | 8 | always @(posedge clk or negedge S) 9 | 10 | begin 11 | if (S == 1'b0) begin // set active low 12 | Q <= 1'b1; 13 | end 14 | else if (E == 1'b1) begin 15 | Q <= D; 16 | end 17 | end 18 | endmodule 19 | -------------------------------------------------------------------------------- /src/ff_models/dffer.v: -------------------------------------------------------------------------------- 1 | module dffer(D,clk,E,R,Q); 2 | input D; // Data input 3 | input clk; // clock input 4 | input E; // enable 5 | input R; // reset input 6 | output reg Q; // output Q 7 | 8 | always @(posedge clk or negedge R) 9 | 10 | begin 11 | if (R == 1'b0) begin // reset active low 12 | Q <= 1'b0; 13 | end 14 | else if (E == 1'b1) begin 15 | Q <= D; 16 | end 17 | end 18 | endmodule 19 | -------------------------------------------------------------------------------- /tests/unit/data/z1000/ffs/dffes.v: -------------------------------------------------------------------------------- 1 | module dffes(D,clk,E,S,Q); 2 | input D; // Data input 3 | input clk; // clock input 4 | input E; // enable 5 | input S; // set input 6 | output reg Q; // output Q 7 | 8 | always @(posedge clk or negedge S) 9 | 10 | begin 11 | if (S == 1'b0) begin // set active low 12 | Q <= 1'b1; 13 | end 14 | else if (E == 1'b1) begin 15 | Q <= D; 16 | end 17 | end 18 | endmodule 19 | -------------------------------------------------------------------------------- /tests/unit/data/z1010/ffs/dffes.v: -------------------------------------------------------------------------------- 1 | module dffes(D,clk,E,S,Q); 2 | input D; // Data input 3 | input clk; // clock input 4 | input E; // enable 5 | input S; // set input 6 | output reg Q; // output Q 7 | 8 | always @(posedge clk or negedge S) 9 | 10 | begin 11 | if (S == 1'b0) begin // set active low 12 | Q <= 1'b1; 13 | end 14 | else if (E == 1'b1) begin 15 | Q <= D; 16 | end 17 | end 18 | endmodule 19 | -------------------------------------------------------------------------------- /src/ff_models/dffhl.v: -------------------------------------------------------------------------------- 1 | module dffhl(D,clk,H,L,Q); 2 | input D; 3 | input clk; 4 | input H; 5 | input L; 6 | output reg Q; 7 | 8 | always @(posedge clk) 9 | 10 | begin 11 | if (L == 1'b0) begin // sync. reset active low 12 | Q <= 1'b0; 13 | end 14 | else if (H == 1'b0) begin // sync. set active low 15 | Q <= 1'b1; 16 | end 17 | else begin 18 | Q <= D; 19 | end 20 | end 21 | 22 | endmodule 23 | -------------------------------------------------------------------------------- /tests/unit/data/z1000/ffs/dffer.v: -------------------------------------------------------------------------------- 1 | module dffer(D,clk,E,R,Q); 2 | input D; // Data input 3 | input clk; // clock input 4 | input E; // enable 5 | input R; // reset input 6 | output reg Q; // output Q 7 | 8 | always @(posedge clk or negedge R) 9 | 10 | begin 11 | if (R == 1'b0) begin // reset active low 12 | Q <= 1'b0; 13 | end 14 | else if (E == 1'b1) begin 15 | Q <= D; 16 | end 17 | end 18 | endmodule 19 | -------------------------------------------------------------------------------- /tests/unit/data/z1010/ffs/dffer.v: -------------------------------------------------------------------------------- 1 | module dffer(D,clk,E,R,Q); 2 | input D; // Data input 3 | input clk; // clock input 4 | input E; // enable 5 | input R; // reset input 6 | output reg Q; // output Q 7 | 8 | always @(posedge clk or negedge R) 9 | 10 | begin 11 | if (R == 1'b0) begin // reset active low 12 | Q <= 1'b0; 13 | end 14 | else if (E == 1'b1) begin 15 | Q <= D; 16 | end 17 | end 18 | endmodule 19 | -------------------------------------------------------------------------------- /architecture/z1010/dsp/bare_mult_tech_dsp.v: -------------------------------------------------------------------------------- 1 | // Zero Asic corp. 2 | // 3 | // Bare multiplier DSP tech mapping instantiating 'dsp_mult'. 4 | // 5 | module \$__dsp_block (input [17:0] A, input [17:0] B, output [39:0] Y); 6 | parameter A_SIGNED = 0; 7 | parameter B_SIGNED = 0; 8 | parameter A_WIDTH = 0; 9 | parameter B_WIDTH = 0; 10 | parameter Y_WIDTH = 0; 11 | 12 | dsp_mult 13 | 14 | _TECHMAP_REPLACE_ ( 15 | .A(A), 16 | .B(B), 17 | .P(Y), 18 | ); 19 | endmodule 20 | 21 | -------------------------------------------------------------------------------- /architecture/z1060/dsp/bare_mult_tech_dsp.v: -------------------------------------------------------------------------------- 1 | // Zero Asic corp. 2 | // 3 | // Bare multiplier DSP tech mapping instantiating 'dsp_mult'. 4 | // 5 | module \$__dsp_block (input [17:0] A, input [17:0] B, output [39:0] Y); 6 | parameter A_SIGNED = 0; 7 | parameter B_SIGNED = 0; 8 | parameter A_WIDTH = 0; 9 | parameter B_WIDTH = 0; 10 | parameter Y_WIDTH = 0; 11 | 12 | dsp_mult 13 | 14 | _TECHMAP_REPLACE_ ( 15 | .A(A), 16 | .B(B), 17 | .P(Y), 18 | ); 19 | endmodule 20 | 21 | -------------------------------------------------------------------------------- /architecture/z1010/dsp/mae_tech_dsp.v: -------------------------------------------------------------------------------- 1 | // Zero Asic corp. 2 | // 3 | // MAE DSP tech mapping instantiating 'efpga_mult'. 4 | // 5 | module \$__dsp_block (input [17:0] A, input [17:0] B, output [39:0] Y); 6 | parameter A_SIGNED = 0; 7 | parameter B_SIGNED = 0; 8 | parameter A_WIDTH = 0; 9 | parameter B_WIDTH = 0; 10 | parameter Y_WIDTH = 0; 11 | 12 | efpga_mult 13 | 14 | _TECHMAP_REPLACE_ ( 15 | .A(A), 16 | .B(B), 17 | .C(40'b0), 18 | .P(Y), 19 | ); 20 | endmodule 21 | 22 | -------------------------------------------------------------------------------- /architecture/z1060/dsp/mae_tech_dsp.v: -------------------------------------------------------------------------------- 1 | // Zero Asic corp. 2 | // 3 | // MAE DSP tech mapping instantiating 'efpga_mult'. 4 | // 5 | module \$__dsp_block (input [17:0] A, input [17:0] B, output [39:0] Y); 6 | parameter A_SIGNED = 0; 7 | parameter B_SIGNED = 0; 8 | parameter A_WIDTH = 0; 9 | parameter B_WIDTH = 0; 10 | parameter Y_WIDTH = 0; 11 | 12 | efpga_mult 13 | 14 | _TECHMAP_REPLACE_ ( 15 | .A(A), 16 | .B(B), 17 | .C(40'b0), 18 | .P(Y), 19 | ); 20 | endmodule 21 | 22 | -------------------------------------------------------------------------------- /tests/unit/data/z1000/z1000.json: -------------------------------------------------------------------------------- 1 | { 2 | "version": 1, 3 | "partname": "z1000", 4 | "lut_size": 4, 5 | "flipflops": { 6 | "features": [ 7 | "async_reset", 8 | "flop_enable" 9 | ], 10 | "models": { 11 | }, 12 | "legalize_list": [ 13 | "$_DFF_PN0_", 14 | "$_DFF_P_", 15 | "$_DFFE_PP_", 16 | "$_DFFE_PN0P_" 17 | ], 18 | "techmap": "tech_flops.v" 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /src/ff_models/dffehl.v: -------------------------------------------------------------------------------- 1 | module dffehl(D,clk,E,H,L,Q); 2 | input D; 3 | input clk; 4 | input E; 5 | input H; 6 | input L; 7 | output reg Q; 8 | 9 | always @(posedge clk) 10 | 11 | begin 12 | if (L == 1'b0) begin // sync. reset active low 13 | Q <= 1'b0; 14 | end 15 | else if (H == 1'b0) begin // sync. set active low 16 | Q <= 1'b1; 17 | end 18 | else if (E == 1'b1) begin 19 | Q <= D; 20 | end 21 | end 22 | 23 | endmodule 24 | -------------------------------------------------------------------------------- /tests/unit/data/z1000/z1000_abspath.json: -------------------------------------------------------------------------------- 1 | { 2 | "version": 1, 3 | "partname": "z1000", 4 | "lut_size": 4, 5 | "flipflops": { 6 | "features": [ 7 | "async_reset", 8 | "flop_enable" 9 | ], 10 | "models": { 11 | }, 12 | "legalize_list": [ 13 | "$_DFF_PN0_", 14 | "$_DFF_P_", 15 | "$_DFFE_PP_", 16 | "$_DFFE_PN0P_" 17 | ], 18 | "techmap": "/tech_flops.v" 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /src/abc_scripts/LUT4/V2/default_lut4.scr: -------------------------------------------------------------------------------- 1 | echo "strash"; 2 | strash; 3 | 4 | echo "&get -n"; 5 | &get -n; 6 | 7 | echo "&put"; 8 | &put; 9 | 10 | echo "scorr"; 11 | scorr; 12 | 13 | echo "dc2"; 14 | dc2; 15 | 16 | echo "strash"; 17 | strash; 18 | 19 | echo "dch -f"; 20 | dch -f; 21 | 22 | echo "if -K 4"; 23 | if -K 4; 24 | 25 | &get -n -m; &ps; &put 26 | 27 | echo "mfs2"; 28 | mfs2; 29 | 30 | echo "&get -n -m"; 31 | &get -n -m; 32 | 33 | echo "&ps; &put"; 34 | &ps; &put; 35 | 36 | -------------------------------------------------------------------------------- /src/abc_scripts/LUT5/BEST/huge_lut5.scr: -------------------------------------------------------------------------------- 1 | time 2 | 3 | echo " " 4 | echo "** Starting ABC HUGE LUT5 optimization and mapping (Zero Asic Corp.)" 5 | echo "" 6 | 7 | &get -n -m; 8 | 9 | &st; &lf -K 5 -e -C 32; &ps; &save -a; time 10 | 11 | &shrink; &if -sz -C 3 -K 9 -S 55; &ps; &save -a; time 12 | 13 | &load 14 | 15 | &shrink; &if -sz -C 3 -K 9 -S 55; &save -a; &ps; time 16 | 17 | &load 18 | 19 | &load; &ps 20 | 21 | &put; 22 | 23 | time 24 | 25 | echo " " 26 | echo "** Ending ABC HUGE LUT5 optimization !!!" 27 | -------------------------------------------------------------------------------- /src/abc_scripts/LUT4/BEST/huge_lut4.scr: -------------------------------------------------------------------------------- 1 | time 2 | 3 | echo " " 4 | echo "** Starting ABC HUGE LUT4 optimization and mapping (Zero Asic Corp.)" 5 | echo "" 6 | 7 | write_blif huge_lut4.blif 8 | 9 | &get -n -m; 10 | 11 | &st; &lf -K 4 -e -C 32; &ps; &save -a; time 12 | 13 | &shrink; &if -sz -C 3 -K 7 -S 44; &ps; &save -a; time 14 | 15 | &load 16 | 17 | &shrink; &if -sz -C 3 -K 7 -S 44; &save -a; &ps; time 18 | 19 | &load 20 | 21 | &load; &ps 22 | 23 | &put; 24 | 25 | time 26 | 27 | echo " " 28 | echo "** Ending ABC HUGE LUT4 optimization !!!" 29 | -------------------------------------------------------------------------------- /src/abc_scripts/LUT4/V1/huge_lut4.scr: -------------------------------------------------------------------------------- 1 | time 2 | 3 | echo " " 4 | echo "** Starting ABC HUGE LUT4 optimization and mapping (Zero Asic Corp.)" 5 | echo "" 6 | 7 | write_blif huge_lut4.blif 8 | 9 | &get -n -m; 10 | 11 | &st; &lf -K 4 -e -C 32; &ps; &save -a; time 12 | 13 | &shrink; &if -sz -C 3 -K 7 -S 44; &ps; &save -a; time 14 | 15 | &load 16 | 17 | &shrink; &if -sz -C 3 -K 7 -S 44; &save -a; &ps; time 18 | 19 | &load 20 | 21 | &load; &ps 22 | 23 | &put; 24 | 25 | time 26 | 27 | echo " " 28 | echo "** Ending ABC HUGE LUT4 optimization !!!" 29 | -------------------------------------------------------------------------------- /src/abc_scripts/LUT5/BEST/fast_lut5.scr: -------------------------------------------------------------------------------- 1 | time 2 | 3 | echo " " 4 | echo "** Starting ABC FAST LUT5 optimization and mapping (Zero Asic Corp.)" 5 | echo "" 6 | 7 | &get -n -m; 8 | 9 | &sopb -C 5; &ps; time 10 | 11 | &st; &lf -K 5 -e -C 32; &ps; &save -a; time 12 | 13 | &shrink; &if -sz -C 5 -K 9 -S 55; &ps; &save -a; time 14 | 15 | &load 16 | 17 | &shrink; &if -sz -C 5 -K 9 -S 55; &save -a; &ps; time 18 | 19 | &load 20 | 21 | &load; &ps 22 | 23 | &put; 24 | 25 | time 26 | 27 | echo " " 28 | echo "** Ending ABC FAST LUT5 optimization !!!" 29 | -------------------------------------------------------------------------------- /tests/unit/check_commands.ys: -------------------------------------------------------------------------------- 1 | logger -expect log ".*synth_fpga.*options.*" 1 2 | help synth_fpga 3 | 4 | logger -expect log ".*load_models" 1 5 | help load_models 6 | 7 | logger -expect log ".*time_chrono" 1 8 | help time_chrono 9 | 10 | logger -expect log ".*report_stat" 1 11 | help report_stat 12 | 13 | logger -expect log ".*zopt_dff.*-nodffe.*-nosdff.*-keepdc.*-sat.*" 1 14 | help zopt_dff 15 | 16 | logger -expect log ".*obs_clean.*options.*selection.*" 1 17 | help obs_clean 18 | 19 | logger -expect log ".* max_height.*options.*" 1 20 | help max_height 21 | -------------------------------------------------------------------------------- /tests/unit/data/z1000/ffs/dffrs.v: -------------------------------------------------------------------------------- 1 | module dffrs(D,clk,R,S,Q); 2 | input D; // Data input 3 | input clk; // clock input 4 | input R; // reset input 5 | input S; // set input 6 | output reg Q; // output Q 7 | 8 | always @(posedge clk or negedge R or negedge S) 9 | 10 | begin 11 | if (R == 1'b0) begin // reset active low 12 | Q <= 1'b0; 13 | end 14 | else if (S == 1'b0) begin // set active low 15 | Q <= 1'b1; 16 | end 17 | else begin 18 | Q <= D; 19 | end 20 | end 21 | endmodule 22 | -------------------------------------------------------------------------------- /tests/unit/data/z1010/ffs/dffrs.v: -------------------------------------------------------------------------------- 1 | module dffrs(D,clk,R,S,Q); 2 | input D; // Data input 3 | input clk; // clock input 4 | input R; // reset input 5 | input S; // set input 6 | output reg Q; // output Q 7 | 8 | always @(posedge clk or negedge R or negedge S) 9 | 10 | begin 11 | if (R == 1'b0) begin // reset active low 12 | Q <= 1'b0; 13 | end 14 | else if (S == 1'b0) begin // set active low 15 | Q <= 1'b1; 16 | end 17 | else begin 18 | Q <= D; 19 | end 20 | end 21 | endmodule 22 | -------------------------------------------------------------------------------- /src/abc_scripts/LUT4/BEST/fast_lut4.scr: -------------------------------------------------------------------------------- 1 | time 2 | 3 | echo " " 4 | echo "** Starting ABC FAST LUT4 optimization and mapping (Zero Asic Corp.)" 5 | echo "" 6 | 7 | write_blif fast_lut4.blif 8 | 9 | &get -n -m; 10 | 11 | &sopb -C 5; &ps; time 12 | 13 | &st; &lf -K 4 -e -C 32; &ps; &save -a; time 14 | 15 | &shrink; &if -sz -C 5 -K 7 -S 44; &ps; &save -a; time 16 | 17 | &load 18 | 19 | &shrink; &if -sz -C 5 -K 7 -S 44; &save -a; &ps; time 20 | 21 | &load 22 | 23 | &load; &ps 24 | 25 | &put; 26 | 27 | time 28 | 29 | echo " " 30 | echo "** Ending ABC FAST LUT4 optimization !!!" 31 | -------------------------------------------------------------------------------- /src/abc_scripts/LUT4/V1/fast_lut4.scr: -------------------------------------------------------------------------------- 1 | time 2 | 3 | echo " " 4 | echo "** Starting ABC FAST LUT4 optimization and mapping (Zero Asic Corp.)" 5 | echo "" 6 | 7 | write_blif fast_lut4.blif 8 | 9 | &get -n -m; 10 | 11 | &sopb -C 5; &ps; time 12 | 13 | &st; &lf -K 4 -e -C 32; &ps; &save -a; time 14 | 15 | &shrink; &if -sz -C 5 -K 7 -S 44; &ps; &save -a; time 16 | 17 | &load 18 | 19 | &shrink; &if -sz -C 5 -K 7 -S 44; &save -a; &ps; time 20 | 21 | &load 22 | 23 | &load; &ps 24 | 25 | &put; 26 | 27 | time 28 | 29 | echo " " 30 | echo "** Ending ABC FAST LUT4 optimization !!!" 31 | -------------------------------------------------------------------------------- /tests/unit/data/z1000/ffs/dffers.v: -------------------------------------------------------------------------------- 1 | module dffers(D,clk,E,R,S,Q); 2 | input D; // Data input 3 | input clk; // clock input 4 | input E; // enable 5 | input R; // reset input 6 | input S; // set input 7 | output reg Q; // output Q 8 | 9 | always @(posedge clk or negedge R or negedge S) 10 | 11 | begin 12 | if (R == 1'b0) begin // reset active low 13 | Q <= 1'b0; 14 | end 15 | else if (S == 1'b0) begin // set active low 16 | Q <= 1'b1; 17 | end 18 | else if (E == 1'b1) begin 19 | Q <= D; 20 | end 21 | end 22 | endmodule 23 | -------------------------------------------------------------------------------- /tests/unit/data/z1010/ffs/dffers.v: -------------------------------------------------------------------------------- 1 | module dffers(D,clk,E,R,S,Q); 2 | input D; // Data input 3 | input clk; // clock input 4 | input E; // enable 5 | input R; // reset input 6 | input S; // set input 7 | output reg Q; // output Q 8 | 9 | always @(posedge clk or negedge R or negedge S) 10 | 11 | begin 12 | if (R == 1'b0) begin // reset active low 13 | Q <= 1'b0; 14 | end 15 | else if (S == 1'b0) begin // set active low 16 | Q <= 1'b1; 17 | end 18 | else if (E == 1'b1) begin 19 | Q <= D; 20 | end 21 | end 22 | endmodule 23 | -------------------------------------------------------------------------------- /cmake/GitRevision.cmake: -------------------------------------------------------------------------------- 1 | # https://github.com/povik/yosys-slang/blob/76b83eb5b73ba871797e6db7bc5fed10af380be4/cmake/GitRevision.cmake 2 | function(git_rev_parse output_var source_dir) 3 | 4 | if (NOT DEFINED ${output_var}) 5 | execute_process( 6 | COMMAND git -C ${source_dir} rev-parse HEAD 7 | OUTPUT_VARIABLE ${output_var} 8 | OUTPUT_STRIP_TRAILING_WHITESPACE 9 | COMMAND_ERROR_IS_FATAL ANY 10 | ) 11 | endif() 12 | 13 | message(STATUS "Got ${output_var}: ${${output_var}}") 14 | 15 | set(${output_var} ${${output_var}} PARENT_SCOPE) 16 | 17 | endfunction() 18 | -------------------------------------------------------------------------------- /src/abc_scripts/LUT4/BASIC/area_lut4.scr: -------------------------------------------------------------------------------- 1 | time 2 | 3 | echo " " 4 | echo "** Starting BASIC ABC AREA LUT4 optimization and mapping !!!" 5 | 6 | write_blif area_lut4.blif 7 | 8 | strash 9 | 10 | echo "" 11 | echo "&fraig" 12 | &get -n 13 | &sopb -C 3 14 | &fraig -x -L 200 15 | &put 16 | 17 | echo "" 18 | echo "dc2" 19 | dc2 20 | 21 | strash 22 | echo "" 23 | echo "if -K 4 -a" 24 | if -K 4 -a 25 | &get -n -m; &save -a; &ps ; time 26 | &put 27 | 28 | lutpack -S 1 29 | &get -n -m; &save -a; &ps ; time 30 | &load 31 | &put 32 | 33 | write_blif out.blif 34 | 35 | echo " " 36 | echo "** ABC BASIC AREA LUT4 Optimization and Mapping done !!!" 37 | -------------------------------------------------------------------------------- /src/abc_scripts/LUT6/V1/default_lut6.scr: -------------------------------------------------------------------------------- 1 | echo "strash"; 2 | strash; 3 | 4 | echo "&get -n"; 5 | &get -n; 6 | 7 | echo "&fraig -x"; 8 | &fraig -x; 9 | 10 | echo "&put"; 11 | &put; 12 | 13 | echo "scorr"; 14 | scorr; 15 | 16 | echo "dc2"; 17 | dc2; 18 | 19 | echo "dretime"; 20 | dretime; 21 | 22 | echo "strash"; 23 | strash; 24 | 25 | echo "dch -f"; 26 | dch -f; 27 | 28 | echo "if -K 6"; 29 | if -K 6; 30 | 31 | &get -n -m; &ps; &put 32 | 33 | echo "mfs2"; 34 | mfs2; 35 | 36 | echo "lutpack -S 1"; 37 | lutpack -S 1; 38 | 39 | echo "&get -n -m"; 40 | &get -n -m; 41 | 42 | echo "&ps; &put"; 43 | &ps; &put; 44 | 45 | -------------------------------------------------------------------------------- /src/abc_scripts/LUT6/V2/default_lut6.scr: -------------------------------------------------------------------------------- 1 | echo "strash"; 2 | strash; 3 | 4 | echo "&get -n"; 5 | &get -n; 6 | 7 | echo "&fraig -x"; 8 | &fraig -x; 9 | 10 | echo "&put"; 11 | &put; 12 | 13 | echo "scorr"; 14 | scorr; 15 | 16 | echo "dc2"; 17 | dc2; 18 | 19 | echo "dretime"; 20 | dretime; 21 | 22 | echo "strash"; 23 | strash; 24 | 25 | echo "dch -f"; 26 | dch -f; 27 | 28 | echo "if -K 6"; 29 | if -K 6; 30 | 31 | &get -n -m; &ps; &put 32 | 33 | echo "mfs2"; 34 | mfs2; 35 | 36 | echo "lutpack -S 1"; 37 | lutpack -S 1; 38 | 39 | echo "&get -n -m"; 40 | &get -n -m; 41 | 42 | echo "&ps; &put"; 43 | &ps; &put; 44 | 45 | -------------------------------------------------------------------------------- /src/abc_scripts/LUT6/V3/default_lut6.scr: -------------------------------------------------------------------------------- 1 | echo "strash"; 2 | strash; 3 | 4 | echo "&get -n"; 5 | &get -n; 6 | 7 | echo "&fraig -x"; 8 | &fraig -x; 9 | 10 | echo "&put"; 11 | &put; 12 | 13 | echo "scorr"; 14 | scorr; 15 | 16 | echo "dc2"; 17 | dc2; 18 | 19 | echo "dretime"; 20 | dretime; 21 | 22 | echo "strash"; 23 | strash; 24 | 25 | echo "dch -f"; 26 | dch -f; 27 | 28 | echo "if -K 6"; 29 | if -K 6; 30 | 31 | &get -n -m; &ps; &put 32 | 33 | echo "mfs2"; 34 | mfs2; 35 | 36 | echo "lutpack -S 1"; 37 | lutpack -S 1; 38 | 39 | echo "&get -n -m"; 40 | &get -n -m; 41 | 42 | echo "&ps; &put"; 43 | &ps; &put; 44 | 45 | -------------------------------------------------------------------------------- /src/abc_scripts/LUT4/BASIC/tiny_area_lut4.scr: -------------------------------------------------------------------------------- 1 | time 2 | 3 | echo " " 4 | echo "** Starting BASIC ABC TINY AREA LUT4 optimization and mapping !!!" 5 | 6 | write_blif tiny_area_lut4.blif 7 | 8 | strash 9 | 10 | echo "" 11 | echo "&fraig" 12 | &get -n 13 | &sopb -C 3 14 | &fraig -x -L 200 15 | &put 16 | 17 | echo "" 18 | echo "dc2" 19 | dc2 20 | 21 | strash 22 | echo "" 23 | echo "if -K 4 -a" 24 | if -K 4 -a 25 | &get -n -m; &save -a; &ps ; time 26 | &put 27 | 28 | lutpack -S 1 29 | &get -n -m; &save -a; &ps ; time 30 | &load 31 | &put 32 | 33 | write_blif out.blif 34 | 35 | echo " " 36 | echo "** ABC BASIC TINY AREA LUT4 Optimization and Mapping done !!!" 37 | -------------------------------------------------------------------------------- /src/abc_scripts/LUT4/BASIC/small_area_lut4.scr: -------------------------------------------------------------------------------- 1 | time 2 | 3 | echo " " 4 | echo "** Starting BASIC ABC SMALL AREA LUT4 optimization and mapping !!!" 5 | 6 | write_blif small_area_lut4.blif 7 | 8 | strash 9 | 10 | echo "" 11 | echo "&fraig" 12 | &get -n 13 | &sopb -C 3 14 | &fraig -x -L 200 15 | &put 16 | 17 | echo "" 18 | echo "dc2" 19 | dc2 20 | 21 | strash 22 | echo "" 23 | echo "if -K 4 -a" 24 | if -K 4 -a 25 | &get -n -m; &save -a; &ps ; time 26 | &put 27 | 28 | lutpack -S 1 29 | &get -n -m; &save -a; &ps ; time 30 | &load 31 | &put 32 | 33 | write_blif out.blif 34 | 35 | echo " " 36 | echo "** ABC BASIC SMALL AREA LUT4 Optimization and Mapping done !!!" 37 | -------------------------------------------------------------------------------- /tests/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | 2 | set(ALL_TESTS 3 | unit/check_commands.ys 4 | unit/heartbeat-z1000-config.ys 5 | unit/heartbeat-z1010-config.ys 6 | unit/heartbeat-z1000-hardcode.ys 7 | unit/heartbeat-z1010-hardcode.ys 8 | unit/heartbeat-z1000-config-abspath.ys 9 | unit/heartbeat-z1010-config-abspath.ys 10 | ) 11 | 12 | foreach(test_script ${ALL_TESTS}) 13 | set(test_fullpath ${CMAKE_CURRENT_SOURCE_DIR}/${test_script}) 14 | get_filename_component(test_dir ${test_fullpath} DIRECTORY) 15 | add_test( 16 | NAME ${test_script} 17 | WORKING_DIRECTORY ${test_dir} 18 | COMMAND 19 | ${YOSYS_BINDIR}/yosys -m $ ${test_fullpath} 20 | ) 21 | endforeach() 22 | -------------------------------------------------------------------------------- /src/abc_scripts/LUT4/V2/huge_lut4.scr: -------------------------------------------------------------------------------- 1 | time 2 | 3 | echo " " 4 | echo "** Starting ABC HUGE LUT4 optimization and mapping !!!" 5 | 6 | &get -n -m; 7 | 8 | echo " " 9 | echo "&st; &lf -K 4 -e -C 32;" 10 | &st; &lf -K 4 -e -C 32; &ps; &save -a; time 11 | 12 | echo " " 13 | echo "&if -sz -C 3 -K 7 -S 44" 14 | &shrink; &if -sz -C 3 -K 7 -S 44; &ps; &save -a; time 15 | 16 | &load 17 | 18 | echo " " 19 | echo "&if -sz -C 3 -K 7 -S 44" 20 | &shrink; &if -sz -C 3 -K 7 -S 44; &save -a; &ps; time 21 | 22 | &load 23 | 24 | echo " " 25 | echo "********************* " 26 | echo "* Final Best netlist" 27 | echo "********************* " 28 | &load; &ps 29 | 30 | &put; 31 | 32 | time 33 | 34 | echo " " 35 | echo "** Ending ABC HUGE optimization !!!" 36 | -------------------------------------------------------------------------------- /src/abc_scripts/LUT4/V3/huge_lut4.scr: -------------------------------------------------------------------------------- 1 | time 2 | 3 | echo " " 4 | echo "** Starting ABC HUGE LUT4 optimization and mapping !!!" 5 | 6 | &get -n -m; 7 | 8 | echo " " 9 | echo "&st; &lf -K 4 -e -C 32;" 10 | &st; &lf -K 4 -e -C 32; &ps; &save -a; time 11 | 12 | echo " " 13 | echo "&if -sz -C 3 -K 7 -S 44" 14 | &shrink; &if -sz -C 3 -K 7 -S 44; &ps; &save -a; time 15 | 16 | &load 17 | 18 | echo " " 19 | echo "&if -sz -C 3 -K 7 -S 44" 20 | &shrink; &if -sz -C 3 -K 7 -S 44; &save -a; &ps; time 21 | 22 | &load 23 | 24 | echo " " 25 | echo "********************* " 26 | echo "* Final Best netlist" 27 | echo "********************* " 28 | &load; &ps 29 | 30 | &put; 31 | 32 | time 33 | 34 | echo " " 35 | echo "** Ending ABC HUGE optimization !!!" 36 | -------------------------------------------------------------------------------- /src/abc_scripts/LUT4/V4/huge_lut4.scr: -------------------------------------------------------------------------------- 1 | time 2 | 3 | echo " " 4 | echo "** Starting ABC HUGE LUT4 optimization and mapping !!!" 5 | 6 | &get -n -m; 7 | 8 | echo " " 9 | echo "&st; &lf -K 4 -e -C 32;" 10 | &st; &lf -K 4 -e -C 32; &ps; &save -a; time 11 | 12 | echo " " 13 | echo "&if -sz -C 3 -K 7 -S 44" 14 | &shrink; &if -sz -C 3 -K 7 -S 44; &ps; &save -a; time 15 | 16 | &load 17 | 18 | echo " " 19 | echo "&if -sz -C 3 -K 7 -S 44" 20 | &shrink; &if -sz -C 3 -K 7 -S 44; &save -a; &ps; time 21 | 22 | &load 23 | 24 | echo " " 25 | echo "********************* " 26 | echo "* Final Best netlist" 27 | echo "********************* " 28 | &load; &ps 29 | 30 | &put; 31 | 32 | time 33 | 34 | echo " " 35 | echo "** Ending ABC HUGE optimization !!!" 36 | -------------------------------------------------------------------------------- /src/abc_scripts/LUT4/V5/huge_lut4.scr: -------------------------------------------------------------------------------- 1 | time 2 | 3 | echo " " 4 | echo "** Starting ABC HUGE LUT4 optimization and mapping !!!" 5 | 6 | &get -n -m; 7 | 8 | echo " " 9 | echo "&st; &lf -K 4 -e -C 32;" 10 | &st; &lf -K 4 -e -C 32; &ps; &save -a; time 11 | 12 | echo " " 13 | echo "&if -sz -C 3 -K 7 -S 44" 14 | &shrink; &if -sz -C 3 -K 7 -S 44; &ps; &save -a; time 15 | 16 | &load 17 | 18 | echo " " 19 | echo "&if -sz -C 3 -K 7 -S 44" 20 | &shrink; &if -sz -C 3 -K 7 -S 44; &save -a; &ps; time 21 | 22 | &load 23 | 24 | echo " " 25 | echo "********************* " 26 | echo "* Final Best netlist" 27 | echo "********************* " 28 | &load; &ps 29 | 30 | &put; 31 | 32 | time 33 | 34 | echo " " 35 | echo "** Ending ABC HUGE optimization !!!" 36 | -------------------------------------------------------------------------------- /src/abc_scripts/LUT4/V6/huge_lut4.scr: -------------------------------------------------------------------------------- 1 | time 2 | 3 | echo " " 4 | echo "** Starting ABC HUGE LUT4 optimization and mapping !!!" 5 | 6 | &get -n -m; 7 | 8 | echo " " 9 | echo "&st; &lf -K 6 -e -C 32;" 10 | &st; &lf -K 6 -e -C 32; &ps; &save -a; time 11 | 12 | echo " " 13 | echo "&if -sz -C 3 -K 11 -S 66" 14 | &shrink; &if -sz -C 3 -K 11 -S 66; &ps; &save -a; time 15 | 16 | &load 17 | 18 | echo " " 19 | echo "&if -sz -C 3 -K 11 -S 66" 20 | &shrink; &if -sz -C 3 -K 11 -S 66; &save -a; &ps; time 21 | 22 | &load 23 | 24 | echo " " 25 | echo "********************* " 26 | echo "* Final Best netlist" 27 | echo "********************* " 28 | &load; &ps 29 | 30 | &put; 31 | 32 | time 33 | 34 | echo " " 35 | echo "** Ending ABC HUGE optimization !!!" 36 | -------------------------------------------------------------------------------- /src/abc_scripts/LUT6/V1/huge_lut6.scr: -------------------------------------------------------------------------------- 1 | time 2 | 3 | echo " " 4 | echo "** Starting ABC HUGE LUT4 optimization and mapping !!!" 5 | 6 | &get -n -m; 7 | 8 | echo " " 9 | echo "&st; &lf -K 6 -e -C 32;" 10 | &st; &lf -K 6 -e -C 32; &ps; &save -a; time 11 | 12 | echo " " 13 | echo "&if -sz -C 3 -K 11 -S 66" 14 | &shrink; &if -sz -C 3 -K 11 -S 66; &ps; &save -a; time 15 | 16 | &load 17 | 18 | echo " " 19 | echo "&if -sz -C 3 -K 11 -S 66" 20 | &shrink; &if -sz -C 3 -K 11 -S 66; &save -a; &ps; time 21 | 22 | &load 23 | 24 | echo " " 25 | echo "********************* " 26 | echo "* Final Best netlist" 27 | echo "********************* " 28 | &load; &ps 29 | 30 | &put; 31 | 32 | time 33 | 34 | echo " " 35 | echo "** Ending ABC HUGE optimization !!!" 36 | -------------------------------------------------------------------------------- /src/abc_scripts/LUT6/V2/huge_lut6.scr: -------------------------------------------------------------------------------- 1 | time 2 | 3 | echo " " 4 | echo "** Starting ABC HUGE LUT4 optimization and mapping !!!" 5 | 6 | &get -n -m; 7 | 8 | echo " " 9 | echo "&st; &lf -K 6 -e -C 32;" 10 | &st; &lf -K 6 -e -C 32; &ps; &save -a; time 11 | 12 | echo " " 13 | echo "&if -sz -C 3 -K 11 -S 66" 14 | &shrink; &if -sz -C 3 -K 11 -S 66; &ps; &save -a; time 15 | 16 | &load 17 | 18 | echo " " 19 | echo "&if -sz -C 3 -K 11 -S 66" 20 | &shrink; &if -sz -C 3 -K 11 -S 66; &save -a; &ps; time 21 | 22 | &load 23 | 24 | echo " " 25 | echo "********************* " 26 | echo "* Final Best netlist" 27 | echo "********************* " 28 | &load; &ps 29 | 30 | &put; 31 | 32 | time 33 | 34 | echo " " 35 | echo "** Ending ABC HUGE optimization !!!" 36 | -------------------------------------------------------------------------------- /src/abc_scripts/LUT6/V3/huge_lut6.scr: -------------------------------------------------------------------------------- 1 | time 2 | 3 | echo " " 4 | echo "** Starting ABC HUGE LUT4 optimization and mapping !!!" 5 | 6 | &get -n -m; 7 | 8 | echo " " 9 | echo "&st; &lf -K 6 -e -C 32;" 10 | &st; &lf -K 6 -e -C 32; &ps; &save -a; time 11 | 12 | echo " " 13 | echo "&if -sz -C 3 -K 11 -S 66" 14 | &shrink; &if -sz -C 3 -K 11 -S 66; &ps; &save -a; time 15 | 16 | &load 17 | 18 | echo " " 19 | echo "&if -sz -C 3 -K 11 -S 66" 20 | &shrink; &if -sz -C 3 -K 11 -S 66; &save -a; &ps; time 21 | 22 | &load 23 | 24 | echo " " 25 | echo "********************* " 26 | echo "* Final Best netlist" 27 | echo "********************* " 28 | &load; &ps 29 | 30 | &put; 31 | 32 | time 33 | 34 | echo " " 35 | echo "** Ending ABC HUGE optimization !!!" 36 | -------------------------------------------------------------------------------- /src/abc_scripts/LUT6/V4/huge_lut6.scr: -------------------------------------------------------------------------------- 1 | time 2 | 3 | echo " " 4 | echo "** Starting ABC HUGE LUT4 optimization and mapping !!!" 5 | 6 | &get -n -m; 7 | 8 | echo " " 9 | echo "&st; &lf -K 6 -e -C 32;" 10 | &st; &lf -K 6 -e -C 32; &ps; &save -a; time 11 | 12 | echo " " 13 | echo "&if -sz -C 3 -K 11 -S 66" 14 | &shrink; &if -sz -C 3 -K 11 -S 66; &ps; &save -a; time 15 | 16 | &load 17 | 18 | echo " " 19 | echo "&if -sz -C 3 -K 11 -S 66" 20 | &shrink; &if -sz -C 3 -K 11 -S 66; &save -a; &ps; time 21 | 22 | &load 23 | 24 | echo " " 25 | echo "********************* " 26 | echo "* Final Best netlist" 27 | echo "********************* " 28 | &load; &ps 29 | 30 | &put; 31 | 32 | time 33 | 34 | echo " " 35 | echo "** Ending ABC HUGE optimization !!!" 36 | -------------------------------------------------------------------------------- /src/abc_scripts/LUT6/V5/huge_lut6.scr: -------------------------------------------------------------------------------- 1 | time 2 | 3 | echo " " 4 | echo "** Starting ABC HUGE LUT4 optimization and mapping !!!" 5 | 6 | &get -n -m; 7 | 8 | echo " " 9 | echo "&st; &lf -K 6 -e -C 32;" 10 | &st; &lf -K 6 -e -C 32; &ps; &save -a; time 11 | 12 | echo " " 13 | echo "&if -sz -C 3 -K 11 -S 66" 14 | &shrink; &if -sz -C 3 -K 11 -S 66; &ps; &save -a; time 15 | 16 | &load 17 | 18 | echo " " 19 | echo "&if -sz -C 3 -K 11 -S 66" 20 | &shrink; &if -sz -C 3 -K 11 -S 66; &save -a; &ps; time 21 | 22 | &load 23 | 24 | echo " " 25 | echo "********************* " 26 | echo "* Final Best netlist" 27 | echo "********************* " 28 | &load; &ps 29 | 30 | &put; 31 | 32 | time 33 | 34 | echo " " 35 | echo "** Ending ABC HUGE optimization !!!" 36 | -------------------------------------------------------------------------------- /src/abc_scripts/LUT6/V6/huge_lut6.scr: -------------------------------------------------------------------------------- 1 | time 2 | 3 | echo " " 4 | echo "** Starting ABC HUGE LUT4 optimization and mapping !!!" 5 | 6 | &get -n -m; 7 | 8 | echo " " 9 | echo "&st; &lf -K 6 -e -C 32;" 10 | &st; &lf -K 6 -e -C 32; &ps; &save -a; time 11 | 12 | echo " " 13 | echo "&if -sz -C 3 -K 11 -S 66" 14 | &shrink; &if -sz -C 3 -K 11 -S 66; &ps; &save -a; time 15 | 16 | &load 17 | 18 | echo " " 19 | echo "&if -sz -C 3 -K 11 -S 66" 20 | &shrink; &if -sz -C 3 -K 11 -S 66; &save -a; &ps; time 21 | 22 | &load 23 | 24 | echo " " 25 | echo "********************* " 26 | echo "* Final Best netlist" 27 | echo "********************* " 28 | &load; &ps 29 | 30 | &put; 31 | 32 | time 33 | 34 | echo " " 35 | echo "** Ending ABC HUGE optimization !!!" 36 | -------------------------------------------------------------------------------- /src/abc_scripts/LUT6/V7/huge_lut6.scr: -------------------------------------------------------------------------------- 1 | time 2 | 3 | echo " " 4 | echo "** Starting ABC HUGE LUT4 optimization and mapping !!!" 5 | 6 | &get -n -m; 7 | 8 | echo " " 9 | echo "&st; &lf -K 6 -e -C 32;" 10 | &st; &lf -K 6 -e -C 32; &ps; &save -a; time 11 | 12 | echo " " 13 | echo "&if -sz -C 3 -K 11 -S 66" 14 | &shrink; &if -sz -C 3 -K 11 -S 66; &ps; &save -a; time 15 | 16 | &load 17 | 18 | echo " " 19 | echo "&if -sz -C 3 -K 11 -S 66" 20 | &shrink; &if -sz -C 3 -K 11 -S 66; &save -a; &ps; time 21 | 22 | &load 23 | 24 | echo " " 25 | echo "********************* " 26 | echo "* Final Best netlist" 27 | echo "********************* " 28 | &load; &ps 29 | 30 | &put; 31 | 32 | time 33 | 34 | echo " " 35 | echo "** Ending ABC HUGE optimization !!!" 36 | -------------------------------------------------------------------------------- /src/abc_scripts/LUT6/V8/huge_lut6.scr: -------------------------------------------------------------------------------- 1 | time 2 | 3 | echo " " 4 | echo "** Starting ABC HUGE LUT4 optimization and mapping !!!" 5 | 6 | &get -n -m; 7 | 8 | echo " " 9 | echo "&st; &lf -K 6 -e -C 32;" 10 | &st; &lf -K 6 -e -C 32; &ps; &save -a; time 11 | 12 | echo " " 13 | echo "&if -sz -C 3 -K 11 -S 66" 14 | &shrink; &if -sz -C 3 -K 11 -S 66; &ps; &save -a; time 15 | 16 | &load 17 | 18 | echo " " 19 | echo "&if -sz -C 3 -K 11 -S 66" 20 | &shrink; &if -sz -C 3 -K 11 -S 66; &save -a; &ps; time 21 | 22 | &load 23 | 24 | echo " " 25 | echo "********************* " 26 | echo "* Final Best netlist" 27 | echo "********************* " 28 | &load; &ps 29 | 30 | &put; 31 | 32 | time 33 | 34 | echo " " 35 | echo "** Ending ABC HUGE optimization !!!" 36 | -------------------------------------------------------------------------------- /architecture/z1010/dsp/tech_dsp.v: -------------------------------------------------------------------------------- 1 | //tech_mae_map.v 2 | //Based on FPGA Architect tech_dsp.v 3 | 4 | //For the specific case where multipliers are inferred, handles 5 | //the mapping of arbitrary-length multipliers to efpga_mult primitives 6 | 7 | module _dsp_block_ 8 | ( 9 | A, B, Y 10 | ); 11 | 12 | parameter A_SIGNED = 0; 13 | parameter B_SIGNED = 0; 14 | parameter A_WIDTH = 1; 15 | parameter B_WIDTH = 1; 16 | parameter Y_WIDTH = 1; 17 | 18 | (* force_downto *) 19 | input [A_WIDTH-1:0] A; 20 | (* force_downto *) 21 | input [B_WIDTH-1:0] B; 22 | (* force_downto *) 23 | output [Y_WIDTH-1:0] Y; 24 | 25 | efpga_mult 26 | _TECHMAP_REPLACE_ ( 27 | .a(A), 28 | .b(B), 29 | .y(Y) 30 | ); 31 | 32 | 33 | endmodule // tech_multiplier 34 | -------------------------------------------------------------------------------- /architecture/z1060/dsp/tech_dsp.v: -------------------------------------------------------------------------------- 1 | //tech_mae_map.v 2 | //Based on FPGA Architect tech_dsp.v 3 | 4 | //For the specific case where multipliers are inferred, handles 5 | //the mapping of arbitrary-length multipliers to efpga_mult primitives 6 | 7 | module _dsp_block_ 8 | ( 9 | A, B, Y 10 | ); 11 | 12 | parameter A_SIGNED = 0; 13 | parameter B_SIGNED = 0; 14 | parameter A_WIDTH = 1; 15 | parameter B_WIDTH = 1; 16 | parameter Y_WIDTH = 1; 17 | 18 | (* force_downto *) 19 | input [A_WIDTH-1:0] A; 20 | (* force_downto *) 21 | input [B_WIDTH-1:0] B; 22 | (* force_downto *) 23 | output [Y_WIDTH-1:0] Y; 24 | 25 | efpga_mult 26 | _TECHMAP_REPLACE_ ( 27 | .a(A), 28 | .b(B), 29 | .y(Y) 30 | ); 31 | 32 | 33 | endmodule // tech_multiplier 34 | -------------------------------------------------------------------------------- /src/abc_scripts/LUT4/V1/default_lut4.scr: -------------------------------------------------------------------------------- 1 | time 2 | 3 | echo "strash"; 4 | strash; 5 | 6 | echo "&get -n"; 7 | &get -n; 8 | 9 | echo "&fraig -x"; 10 | &fraig -x; 11 | time 12 | 13 | echo "&put"; 14 | &put; 15 | time 16 | 17 | echo "scorr"; 18 | scorr; 19 | time 20 | 21 | echo "dc2"; 22 | dc2; 23 | time 24 | 25 | echo "dretime"; 26 | dretime; 27 | time 28 | 29 | echo "strash"; 30 | strash; 31 | 32 | echo "dch -f"; 33 | dch -f; 34 | time 35 | 36 | echo "if -K 4"; 37 | if -K 4; 38 | time 39 | 40 | &get -n -m; &ps; &put 41 | 42 | echo "mfs2"; 43 | mfs2; 44 | time 45 | 46 | echo "lutpack -S 1"; 47 | lutpack -S 1; 48 | time 49 | 50 | echo "&get -n -m"; 51 | &get -n -m; 52 | 53 | echo "&ps; &put"; 54 | &ps; &put; 55 | 56 | time 57 | -------------------------------------------------------------------------------- /src/abc_scripts/LUT4/BASIC/huge_lut4.scr: -------------------------------------------------------------------------------- 1 | time 2 | 3 | echo " " 4 | echo "** Starting ABC HUGE LUT4 optimization and mapping !!!" 5 | 6 | write_blif huge_lut4.blif 7 | 8 | &get -n -m; 9 | 10 | echo " " 11 | echo "&st; &lf -K 4 -e -C 32;" 12 | &st; &lf -K 4 -e -C 32; &ps; &save -a; time 13 | 14 | echo " " 15 | echo "&if -sz -C 3 -K 7 -S 44" 16 | &shrink; &if -sz -C 3 -K 7 -S 44; &ps; &save -a; time 17 | 18 | &load 19 | 20 | echo " " 21 | echo "&if -sz -C 3 -K 7 -S 44" 22 | &shrink; &if -sz -C 3 -K 7 -S 44; &save -a; &ps; time 23 | 24 | &load 25 | 26 | echo " " 27 | echo "********************* " 28 | echo "* Final Best netlist" 29 | echo "********************* " 30 | &load; &ps 31 | 32 | &put; 33 | 34 | time 35 | 36 | echo " " 37 | echo "** Ending ABC HUGE LUT4 optimization !!!" 38 | -------------------------------------------------------------------------------- /src/abc_scripts/LUT6/BEST/huge_lut6.scr: -------------------------------------------------------------------------------- 1 | time 2 | 3 | echo " " 4 | echo "** Starting ABC HUGE LUT6 optimization and mapping (Zero Asic Corp.)" 5 | echo "" 6 | 7 | write_blif huge_lut6.blif 8 | 9 | &get -n -m; 10 | 11 | &ps 12 | 13 | echo " " 14 | echo "&st; &lf -K 6 -e -C 32;" 15 | &st; &lf -K 6 -e -C 32; &ps; &save -a; time 16 | 17 | echo " " 18 | echo "&if -sz -C 3 -K 11 -S 66" 19 | &shrink; &if -sz -C 3 -K 11 -S 66; &ps; &save -a; time 20 | 21 | &load 22 | 23 | echo " " 24 | echo "&if -sz -C 3 -K 11 -S 66" 25 | &shrink; &if -sz -C 3 -K 11 -S 66; &save -a; &ps; time 26 | 27 | &load 28 | 29 | echo " " 30 | echo "********************* " 31 | echo "* Final Best netlist" 32 | echo "********************* " 33 | &load; &ps 34 | 35 | &put; 36 | 37 | time 38 | 39 | echo " " 40 | echo "** Ending ABC HUGE LUT6 optimization !!!" 41 | -------------------------------------------------------------------------------- /src/abc_scripts/LUT4/V2/fast_lut4.scr: -------------------------------------------------------------------------------- 1 | time 2 | 3 | echo " " 4 | echo "** Starting ABC FAST LUT4 optimization and mapping !!!" 5 | 6 | write_blif in.blif 7 | 8 | &get -n -m; 9 | 10 | echo " " 11 | echo "&sopb -C 5;" 12 | &sopb -C 5; &ps; time 13 | 14 | echo " " 15 | echo "&st; &lf -K 4 -e -C 32;" 16 | &st; &lf -K 4 -e -C 32; &ps; &save -a; time 17 | 18 | echo " " 19 | echo "&if -sz -C 5 -K 7 -S 44" 20 | &shrink; &if -sz -C 5 -K 7 -S 44; &ps; &save -a; time 21 | 22 | &load 23 | 24 | echo " " 25 | echo "&if -sz -C 5 -K 7 -S 44" 26 | &shrink; &if -sz -C 5 -K 7 -S 44; &save -a; &ps; time 27 | 28 | &load 29 | 30 | echo " " 31 | echo "********************* " 32 | echo "* Final Best netlist" 33 | echo "********************* " 34 | &load; &ps 35 | 36 | &put; 37 | 38 | time 39 | 40 | echo " " 41 | echo "** Ending ABC FAST optimization !!!" 42 | -------------------------------------------------------------------------------- /src/abc_scripts/LUT4/V3/fast_lut4.scr: -------------------------------------------------------------------------------- 1 | time 2 | 3 | echo " " 4 | echo "** Starting ABC FAST LUT4 optimization and mapping !!!" 5 | 6 | write_blif in.blif 7 | 8 | &get -n -m; 9 | 10 | echo " " 11 | echo "&sopb -C 5;" 12 | &sopb -C 5; &ps; time 13 | 14 | echo " " 15 | echo "&st; &lf -K 4 -e -C 32;" 16 | &st; &lf -K 4 -e -C 32; &ps; &save -a; time 17 | 18 | echo " " 19 | echo "&if -sz -C 5 -K 7 -S 44" 20 | &shrink; &if -sz -C 5 -K 7 -S 44; &ps; &save -a; time 21 | 22 | &load 23 | 24 | echo " " 25 | echo "&if -sz -C 5 -K 7 -S 44" 26 | &shrink; &if -sz -C 5 -K 7 -S 44; &save -a; &ps; time 27 | 28 | &load 29 | 30 | echo " " 31 | echo "********************* " 32 | echo "* Final Best netlist" 33 | echo "********************* " 34 | &load; &ps 35 | 36 | &put; 37 | 38 | time 39 | 40 | echo " " 41 | echo "** Ending ABC FAST optimization !!!" 42 | -------------------------------------------------------------------------------- /src/abc_scripts/LUT4/V4/fast_lut4.scr: -------------------------------------------------------------------------------- 1 | time 2 | 3 | echo " " 4 | echo "** Starting ABC FAST LUT4 optimization and mapping !!!" 5 | 6 | write_blif in.blif 7 | 8 | &get -n -m; 9 | 10 | echo " " 11 | echo "&sopb -C 5;" 12 | &sopb -C 5; &ps; time 13 | 14 | echo " " 15 | echo "&st; &lf -K 4 -e -C 32;" 16 | &st; &lf -K 4 -e -C 32; &ps; &save -a; time 17 | 18 | echo " " 19 | echo "&if -sz -C 5 -K 7 -S 44" 20 | &shrink; &if -sz -C 5 -K 7 -S 44; &ps; &save -a; time 21 | 22 | &load 23 | 24 | echo " " 25 | echo "&if -sz -C 5 -K 7 -S 44" 26 | &shrink; &if -sz -C 5 -K 7 -S 44; &save -a; &ps; time 27 | 28 | &load 29 | 30 | echo " " 31 | echo "********************* " 32 | echo "* Final Best netlist" 33 | echo "********************* " 34 | &load; &ps 35 | 36 | &put; 37 | 38 | time 39 | 40 | echo " " 41 | echo "** Ending ABC FAST optimization !!!" 42 | -------------------------------------------------------------------------------- /src/abc_scripts/LUT4/V5/fast_lut4.scr: -------------------------------------------------------------------------------- 1 | time 2 | 3 | echo " " 4 | echo "** Starting ABC FAST LUT4 optimization and mapping !!!" 5 | 6 | write_blif in.blif 7 | 8 | &get -n -m; 9 | 10 | echo " " 11 | echo "&sopb -C 5;" 12 | &sopb -C 5; &ps; time 13 | 14 | echo " " 15 | echo "&st; &lf -K 4 -e -C 32;" 16 | &st; &lf -K 4 -e -C 32; &ps; &save -a; time 17 | 18 | echo " " 19 | echo "&if -sz -C 5 -K 7 -S 44" 20 | &shrink; &if -sz -C 5 -K 7 -S 44; &ps; &save -a; time 21 | 22 | &load 23 | 24 | echo " " 25 | echo "&if -sz -C 5 -K 7 -S 44" 26 | &shrink; &if -sz -C 5 -K 7 -S 44; &save -a; &ps; time 27 | 28 | &load 29 | 30 | echo " " 31 | echo "********************* " 32 | echo "* Final Best netlist" 33 | echo "********************* " 34 | &load; &ps 35 | 36 | &put; 37 | 38 | time 39 | 40 | echo " " 41 | echo "** Ending ABC FAST optimization !!!" 42 | -------------------------------------------------------------------------------- /src/abc_scripts/LUT4/V6/fast_lut4.scr: -------------------------------------------------------------------------------- 1 | time 2 | 3 | echo " " 4 | echo "** Starting ABC FAST LUT6 optimization and mapping !!!" 5 | 6 | write_blif in.blif 7 | 8 | &get -n -m; 9 | 10 | echo " " 11 | echo "&sopb -C 5;" 12 | &sopb -C 5; &ps; time 13 | 14 | echo " " 15 | echo "&st; &lf -K 6 -e -C 32;" 16 | &st; &lf -K 6 -e -C 32; &ps; &save -a; time 17 | 18 | echo " " 19 | echo "&if -sz -C 5 -K 11 -S 66" 20 | &shrink; &if -sz -C 5 -K 11 -S 66; &ps; &save -a; time 21 | 22 | &load 23 | 24 | echo " " 25 | echo "&if -sz -C 5 -K 11 -S 66" 26 | &shrink; &if -sz -C 5 -K 11 -S 66; &save -a; &ps; time 27 | 28 | &load 29 | 30 | echo " " 31 | echo "********************* " 32 | echo "* Final Best netlist" 33 | echo "********************* " 34 | &load; &ps 35 | 36 | &put; 37 | 38 | time 39 | 40 | echo " " 41 | echo "** Ending ABC FAST optimization !!!" 42 | -------------------------------------------------------------------------------- /src/abc_scripts/LUT6/V1/fast_lut6.scr: -------------------------------------------------------------------------------- 1 | time 2 | 3 | echo " " 4 | echo "** Starting ABC FAST LUT6 optimization and mapping !!!" 5 | 6 | write_blif in.blif 7 | 8 | &get -n -m; 9 | 10 | echo " " 11 | echo "&sopb -C 5;" 12 | &sopb -C 5; &ps; time 13 | 14 | echo " " 15 | echo "&st; &lf -K 6 -e -C 32;" 16 | &st; &lf -K 6 -e -C 32; &ps; &save -a; time 17 | 18 | echo " " 19 | echo "&if -sz -C 5 -K 11 -S 66" 20 | &shrink; &if -sz -C 5 -K 11 -S 66; &ps; &save -a; time 21 | 22 | &load 23 | 24 | echo " " 25 | echo "&if -sz -C 5 -K 11 -S 66" 26 | &shrink; &if -sz -C 5 -K 11 -S 66; &save -a; &ps; time 27 | 28 | &load 29 | 30 | echo " " 31 | echo "********************* " 32 | echo "* Final Best netlist" 33 | echo "********************* " 34 | &load; &ps 35 | 36 | &put; 37 | 38 | time 39 | 40 | echo " " 41 | echo "** Ending ABC FAST optimization !!!" 42 | -------------------------------------------------------------------------------- /src/abc_scripts/LUT6/V2/fast_lut6.scr: -------------------------------------------------------------------------------- 1 | time 2 | 3 | echo " " 4 | echo "** Starting ABC FAST LUT6 optimization and mapping !!!" 5 | 6 | write_blif in.blif 7 | 8 | &get -n -m; 9 | 10 | echo " " 11 | echo "&sopb -C 5;" 12 | &sopb -C 5; &ps; time 13 | 14 | echo " " 15 | echo "&st; &lf -K 6 -e -C 32;" 16 | &st; &lf -K 6 -e -C 32; &ps; &save -a; time 17 | 18 | echo " " 19 | echo "&if -sz -C 5 -K 11 -S 66" 20 | &shrink; &if -sz -C 5 -K 11 -S 66; &ps; &save -a; time 21 | 22 | &load 23 | 24 | echo " " 25 | echo "&if -sz -C 5 -K 11 -S 66" 26 | &shrink; &if -sz -C 5 -K 11 -S 66; &save -a; &ps; time 27 | 28 | &load 29 | 30 | echo " " 31 | echo "********************* " 32 | echo "* Final Best netlist" 33 | echo "********************* " 34 | &load; &ps 35 | 36 | &put; 37 | 38 | time 39 | 40 | echo " " 41 | echo "** Ending ABC FAST optimization !!!" 42 | -------------------------------------------------------------------------------- /src/abc_scripts/LUT6/V3/fast_lut6.scr: -------------------------------------------------------------------------------- 1 | time 2 | 3 | echo " " 4 | echo "** Starting ABC FAST LUT6 optimization and mapping !!!" 5 | 6 | write_blif in.blif 7 | 8 | &get -n -m; 9 | 10 | echo " " 11 | echo "&sopb -C 5;" 12 | &sopb -C 5; &ps; time 13 | 14 | echo " " 15 | echo "&st; &lf -K 6 -e -C 32;" 16 | &st; &lf -K 6 -e -C 32; &ps; &save -a; time 17 | 18 | echo " " 19 | echo "&if -sz -C 5 -K 11 -S 66" 20 | &shrink; &if -sz -C 5 -K 11 -S 66; &ps; &save -a; time 21 | 22 | &load 23 | 24 | echo " " 25 | echo "&if -sz -C 5 -K 11 -S 66" 26 | &shrink; &if -sz -C 5 -K 11 -S 66; &save -a; &ps; time 27 | 28 | &load 29 | 30 | echo " " 31 | echo "********************* " 32 | echo "* Final Best netlist" 33 | echo "********************* " 34 | &load; &ps 35 | 36 | &put; 37 | 38 | time 39 | 40 | echo " " 41 | echo "** Ending ABC FAST optimization !!!" 42 | -------------------------------------------------------------------------------- /src/abc_scripts/LUT6/V4/fast_lut6.scr: -------------------------------------------------------------------------------- 1 | time 2 | 3 | echo " " 4 | echo "** Starting ABC FAST LUT6 optimization and mapping !!!" 5 | 6 | write_blif in.blif 7 | 8 | &get -n -m; 9 | 10 | echo " " 11 | echo "&sopb -C 5;" 12 | &sopb -C 5; &ps; time 13 | 14 | echo " " 15 | echo "&st; &lf -K 6 -e -C 32;" 16 | &st; &lf -K 6 -e -C 32; &ps; &save -a; time 17 | 18 | echo " " 19 | echo "&if -sz -C 5 -K 11 -S 66" 20 | &shrink; &if -sz -C 5 -K 11 -S 66; &ps; &save -a; time 21 | 22 | &load 23 | 24 | echo " " 25 | echo "&if -sz -C 5 -K 11 -S 66" 26 | &shrink; &if -sz -C 5 -K 11 -S 66; &save -a; &ps; time 27 | 28 | &load 29 | 30 | echo " " 31 | echo "********************* " 32 | echo "* Final Best netlist" 33 | echo "********************* " 34 | &load; &ps 35 | 36 | &put; 37 | 38 | time 39 | 40 | echo " " 41 | echo "** Ending ABC FAST optimization !!!" 42 | -------------------------------------------------------------------------------- /src/abc_scripts/LUT6/V5/fast_lut6.scr: -------------------------------------------------------------------------------- 1 | time 2 | 3 | echo " " 4 | echo "** Starting ABC FAST LUT6 optimization and mapping !!!" 5 | 6 | write_blif in.blif 7 | 8 | &get -n -m; 9 | 10 | echo " " 11 | echo "&sopb -C 5;" 12 | &sopb -C 5; &ps; time 13 | 14 | echo " " 15 | echo "&st; &lf -K 6 -e -C 32;" 16 | &st; &lf -K 6 -e -C 32; &ps; &save -a; time 17 | 18 | echo " " 19 | echo "&if -sz -C 5 -K 11 -S 66" 20 | &shrink; &if -sz -C 5 -K 11 -S 66; &ps; &save -a; time 21 | 22 | &load 23 | 24 | echo " " 25 | echo "&if -sz -C 5 -K 11 -S 66" 26 | &shrink; &if -sz -C 5 -K 11 -S 66; &save -a; &ps; time 27 | 28 | &load 29 | 30 | echo " " 31 | echo "********************* " 32 | echo "* Final Best netlist" 33 | echo "********************* " 34 | &load; &ps 35 | 36 | &put; 37 | 38 | time 39 | 40 | echo " " 41 | echo "** Ending ABC FAST optimization !!!" 42 | -------------------------------------------------------------------------------- /src/abc_scripts/LUT6/V6/fast_lut6.scr: -------------------------------------------------------------------------------- 1 | time 2 | 3 | echo " " 4 | echo "** Starting ABC FAST LUT6 optimization and mapping !!!" 5 | 6 | write_blif in.blif 7 | 8 | &get -n -m; 9 | 10 | echo " " 11 | echo "&sopb -C 5;" 12 | &sopb -C 5; &ps; time 13 | 14 | echo " " 15 | echo "&st; &lf -K 6 -e -C 32;" 16 | &st; &lf -K 6 -e -C 32; &ps; &save -a; time 17 | 18 | echo " " 19 | echo "&if -sz -C 5 -K 11 -S 66" 20 | &shrink; &if -sz -C 5 -K 11 -S 66; &ps; &save -a; time 21 | 22 | &load 23 | 24 | echo " " 25 | echo "&if -sz -C 5 -K 11 -S 66" 26 | &shrink; &if -sz -C 5 -K 11 -S 66; &save -a; &ps; time 27 | 28 | &load 29 | 30 | echo " " 31 | echo "********************* " 32 | echo "* Final Best netlist" 33 | echo "********************* " 34 | &load; &ps 35 | 36 | &put; 37 | 38 | time 39 | 40 | echo " " 41 | echo "** Ending ABC FAST optimization !!!" 42 | -------------------------------------------------------------------------------- /src/abc_scripts/LUT6/V7/fast_lut6.scr: -------------------------------------------------------------------------------- 1 | time 2 | 3 | echo " " 4 | echo "** Starting ABC FAST LUT6 optimization and mapping !!!" 5 | 6 | write_blif in.blif 7 | 8 | &get -n -m; 9 | 10 | echo " " 11 | echo "&sopb -C 5;" 12 | &sopb -C 5; &ps; time 13 | 14 | echo " " 15 | echo "&st; &lf -K 6 -e -C 32;" 16 | &st; &lf -K 6 -e -C 32; &ps; &save -a; time 17 | 18 | echo " " 19 | echo "&if -sz -C 5 -K 11 -S 66" 20 | &shrink; &if -sz -C 5 -K 11 -S 66; &ps; &save -a; time 21 | 22 | &load 23 | 24 | echo " " 25 | echo "&if -sz -C 5 -K 11 -S 66" 26 | &shrink; &if -sz -C 5 -K 11 -S 66; &save -a; &ps; time 27 | 28 | &load 29 | 30 | echo " " 31 | echo "********************* " 32 | echo "* Final Best netlist" 33 | echo "********************* " 34 | &load; &ps 35 | 36 | &put; 37 | 38 | time 39 | 40 | echo " " 41 | echo "** Ending ABC FAST optimization !!!" 42 | -------------------------------------------------------------------------------- /src/abc_scripts/LUT6/V8/fast_lut6.scr: -------------------------------------------------------------------------------- 1 | time 2 | 3 | echo " " 4 | echo "** Starting ABC FAST LUT6 optimization and mapping !!!" 5 | 6 | write_blif in.blif 7 | 8 | &get -n -m; 9 | 10 | echo " " 11 | echo "&sopb -C 5;" 12 | &sopb -C 5; &ps; time 13 | 14 | echo " " 15 | echo "&st; &lf -K 6 -e -C 32;" 16 | &st; &lf -K 6 -e -C 32; &ps; &save -a; time 17 | 18 | echo " " 19 | echo "&if -sz -C 5 -K 11 -S 66" 20 | &shrink; &if -sz -C 5 -K 11 -S 66; &ps; &save -a; time 21 | 22 | &load 23 | 24 | echo " " 25 | echo "&if -sz -C 5 -K 11 -S 66" 26 | &shrink; &if -sz -C 5 -K 11 -S 66; &save -a; &ps; time 27 | 28 | &load 29 | 30 | echo " " 31 | echo "********************* " 32 | echo "* Final Best netlist" 33 | echo "********************* " 34 | &load; &ps 35 | 36 | &put; 37 | 38 | time 39 | 40 | echo " " 41 | echo "** Ending ABC FAST optimization !!!" 42 | -------------------------------------------------------------------------------- /tests/unit/heartbeat-z1000-hardcode.ys: -------------------------------------------------------------------------------- 1 | # yosys -m wildebeest -s heartbeat-z1000-hardcode.ys 2 | read_verilog < && cmake --build build") 3 | endif() 4 | 5 | cmake_minimum_required(VERSION 3.20...3.29) 6 | 7 | set(CMAKE_CXX_STANDARD 17) 8 | set(CMAKE_CXX_STANDARD_REQUIRED ON) 9 | set(CMAKE_CXX_EXTENSIONS OFF) 10 | 11 | project(wildebeest CXX) 12 | set(CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}/cmake" ${CMAKE_MODULE_PATH}) 13 | 14 | if (APPLE) 15 | # On Linux, the shared libraries can refer to symbols from the executable by default. 16 | # On macOS, this is not the default behavior and needs to be enabled explicitly. 17 | set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -undefined dynamic_lookup") 18 | endif() 19 | 20 | set(OUTPUT_NAME "wildebeest") 21 | 22 | find_package(Yosys) 23 | 24 | string(FIND ${YOSYS_VERSION} "+" YOSYS_CHECK) 25 | if (${YOSYS_CHECK} EQUAL "-1") 26 | else() 27 | message(WARNING "Only official yosys versions are supported") 28 | endif() 29 | 30 | set(YOSYS_SHARE_DIR ${YOSYS_DATDIR}/plugins/${OUTPUT_NAME}) 31 | 32 | add_subdirectory(src) 33 | add_subdirectory(architecture) 34 | 35 | # Add back once testing is possible 36 | enable_testing() 37 | add_subdirectory(tests) 38 | 39 | # code formatting target 40 | find_program(CLANG_FORMAT_EXE clang-format) 41 | 42 | file(GLOB_RECURSE ALL_CPP_FILES 43 | "*.cc" 44 | "*.h" 45 | ) 46 | 47 | if(CLANG_FORMAT_EXE) 48 | add_custom_target( 49 | format 50 | COMMAND ${CLANG_FORMAT_EXE} -style=file -i ${ALL_CPP_FILES} 51 | WORKING_DIRECTORY ${CMAKE_SOURCE_DIR} 52 | COMMENT "Formatting C++ source files with clang-format..." 53 | ) 54 | endif() -------------------------------------------------------------------------------- /src/config_file_examples/config_xc7.json: -------------------------------------------------------------------------------- 1 | { 2 | "version": 3, 3 | "partname": "Z1010", 4 | "lut_size": 6, 5 | "root_path": "/home/thierry/YOSYS_DYN/yosys/wildebeest", 6 | "flipflops": { 7 | "features": ["async_reset", "async_set", "flop_enable"] 8 | "models": { 9 | "dffers": "SRC/FF_MODELS/dffers.v", 10 | "dffer": "SRC/FF_MODELS/dffer.v", 11 | "dffes": "SRC/FF_MODELS/dffes.v", 12 | "dffe": "SRC/FF_MODELS/dffe.v", 13 | "dffrs": "SRC/FF_MODELS/dffrs.v", 14 | "dffr": "SRC/FF_MODELS/dffr.v", 15 | "dffs": "SRC/FF_MODELS/dffs.v", 16 | "dff": "SRC/FF_MODELS/dff.v" 17 | }, 18 | "techmap": "ARCHITECTURE/Z1010/techlib/tech_flops.v" 19 | }, 20 | "brams": { 21 | "memory_libmap": ["../techlibs/xilinx/brams_xc4v.txt"] 22 | "memory_libmap_parameters": ["-D HAS_SIZE_36", "-D HAS_CASCADE", "-logic-cost-rom 0.5"] 23 | "techmap": ["../techlibs/xilinx/brams_xc6v_map.v"] 24 | }, 25 | "dsps": { 26 | "family": "xc7", 27 | "techmap": "../techlibs/xilinx/xc7_dsp_map.v", 28 | "techmap_parameters": { 29 | "DSP_A_MAXWIDTH": 25, 30 | "DSP_B_MAXWIDTH": 18, 31 | "DSP_A_MAXWIDTH_PARTIAL": 18, 32 | "DSP_A_MINWIDTH": 2, 33 | "DSP_B_MINWIDTH": 2, 34 | "DSP_Y_MINWIDTH": 9, 35 | "DSP_SIGNEDONLY": 1, 36 | "DSP_NAME": "$__MUL25X18" 37 | }, 38 | "pack_command": "xilinx_dsp -family xc7" 39 | } 40 | } 41 | -------------------------------------------------------------------------------- /src/config_file_examples/config_microchip_no_pack.json: -------------------------------------------------------------------------------- 1 | { 2 | "version": 3, 3 | "partname": "Z1010", 4 | "lut_size": 6, 5 | "root_path" : "/home/thierry/YOSYS_DYN/yosys/wildebeest/", 6 | "flipflops": { 7 | "features": ["async_reset", "async_set", "flop_enable"] 8 | "models": { 9 | "dffers": "SRC/FF_MODELS/dffers.v", 10 | "dffer": "SRC/FF_MODELS/dffer.v", 11 | "dffes": "SRC/FF_MODELS/dffes.v", 12 | "dffe": "SRC/FF_MODELS/dffe.v", 13 | "dffrs": "SRC/FF_MODELS/dffrs.v", 14 | "dffr": "SRC/FF_MODELS/dffr.v", 15 | "dffs": "SRC/FF_MODELS/dffs.v", 16 | "dff": "SRC/FF_MODELS/dff.v" 17 | }, 18 | "techmap": "ARCHITECTURE/Z1010/techlib/tech_flops.v" 19 | }, 20 | "brams": { 21 | "memory_libmap": [ "ARCHITECTURE/Z1010/bram/LSRAM.txt", 22 | "ARCHITECTURE/Z1010/bram/uSRAM.txt"] 23 | "memory_libmap_parameters": ["-logic-cost-rom 0.5"] 24 | "techmap": ["ARCHITECTURE/Z1010/bram/LSRAM_map.v", 25 | "ARCHITECTURE/Z1010/bram/uSRAM_map.v"] 26 | }, 27 | "dsps": { 28 | "family": "microchip", 29 | "techmap": "../techlibs/microchip/polarfire_dsp_map.v", 30 | "techmap_parameters": { 31 | "DSP_A_MAXWIDTH": 18, 32 | "DSP_B_MAXWIDTH": 18, 33 | "DSP_A_MAXWIDTH_PARTIAL": 18, 34 | "DSP_A_MINWIDTH": 2, 35 | "DSP_B_MINWIDTH": 2, 36 | "DSP_Y_MINWIDTH": 9, 37 | "DSP_SIGNEDONLY": 1, 38 | "DSP_NAME": "$__MUL18X18" 39 | }, 40 | } 41 | } 42 | -------------------------------------------------------------------------------- /src/config_file_examples/config_microchip.json: -------------------------------------------------------------------------------- 1 | { 2 | "version": 3, 3 | "partname": "Z1010", 4 | "lut_size": 6, 5 | "root_path" : "/home/thierry/YOSYS_DYN/yosys/wildebeest/", 6 | "flipflops": { 7 | "features": ["async_reset", "async_set", "flop_enable"] 8 | "models": { 9 | "dffers": "SRC/FF_MODELS/dffers.v", 10 | "dffer": "SRC/FF_MODELS/dffer.v", 11 | "dffes": "SRC/FF_MODELS/dffes.v", 12 | "dffe": "SRC/FF_MODELS/dffe.v", 13 | "dffrs": "SRC/FF_MODELS/dffrs.v", 14 | "dffr": "SRC/FF_MODELS/dffr.v", 15 | "dffs": "SRC/FF_MODELS/dffs.v", 16 | "dff": "SRC/FF_MODELS/dff.v" 17 | }, 18 | "techmap": "ARCHITECTURE/Z1010/techlib/tech_flops.v" 19 | }, 20 | "brams": { 21 | "memory_libmap": [ "ARCHITECTURE/Z1010/bram/LSRAM.txt", 22 | "ARCHITECTURE/Z1010/bram/uSRAM.txt"] 23 | "memory_libmap_parameters": ["-logic-cost-rom 0.5"] 24 | "techmap": ["ARCHITECTURE/Z1010/bram/LSRAM_map.v", 25 | "ARCHITECTURE/Z1010/bram/uSRAM_map.v"] 26 | }, 27 | "dsps": { 28 | "family": "microchip", 29 | "techmap": "../techlibs/microchip/polarfire_dsp_map.v", 30 | "techmap_parameters": { 31 | "DSP_A_MAXWIDTH": 18, 32 | "DSP_B_MAXWIDTH": 18, 33 | "DSP_A_MAXWIDTH_PARTIAL": 18, 34 | "DSP_A_MINWIDTH": 2, 35 | "DSP_B_MINWIDTH": 2, 36 | "DSP_Y_MINWIDTH": 9, 37 | "DSP_SIGNEDONLY": 1, 38 | "DSP_NAME": "$__MUL18X18" 39 | }, 40 | "pack_command": "microchip_dsp -family polarfire" 41 | } 42 | } 43 | -------------------------------------------------------------------------------- /src/abc_scripts/LUT4/V3/area_lut4.scr: -------------------------------------------------------------------------------- 1 | time 2 | 3 | echo " " 4 | echo "** Starting ABC AREA LUT4 optimization and mapping !!!" 5 | 6 | read_blif in.blif 7 | 8 | &get -n -m 9 | 10 | echo "" 11 | echo "&st; &if -sz -C 5 -K 7 -S 44 -a" 12 | &st; &if -sz -C 5 -K 7 -S 44 -a ; &save -a; &ps; time 13 | &put 14 | 15 | read_blif in.blif 16 | 17 | strash 18 | 19 | echo "" 20 | echo "&fraig" 21 | &get -n 22 | &fraig -x -L 200 23 | &put 24 | 25 | echo "" 26 | echo "dc2" 27 | dc2 28 | 29 | strash 30 | echo "" 31 | echo "dch -f" 32 | dch -f 33 | 34 | echo "" 35 | echo "if -K 4" 36 | if -K 4 37 | &get -n -m; &ps ; &put 38 | 39 | echo "" 40 | echo "mfs2 -W 4 -M 500 -C 7000" 41 | mfs2 -W 4 -M 500 -C 7000 42 | 43 | lutpack -S 1; 44 | 45 | &get -n -m; 46 | 47 | &save -a; 48 | 49 | echo "" 50 | echo "&synch2 -K 4 -C 500; &dch -c 600; &if -K 4 -a; &save -a; &put; mfs2 -W 4 -M 500 -C 7000; &get -n -m; &save -a; &load; &synch2 -K 4 -C 500; &if -K 4 -a; &put; mfs2 -W 4 -M 500 -C 7000; &get -n -m;" 51 | &synch2 -K 4 -C 500; &if -K 4 -a; &save -a; &ps; &load; &put; mfs2 -W 4 -M 500 -C 7000; &get -n -m; &save -a; &ps; &load; &synch2 -K 4 -C 500; &if -K 4 -a; &put; mfs2 -W 4 -M 500 -C 7000; &get -n -m; &save -a; &ps; &load; &ps; time 52 | 53 | 54 | echo "" 55 | echo "mfs2 -W 4 -M 500 -C 7000; &get -n -m; &save -a; &synch2 -K 4 -C 500; &lf -K 4 -e; &save -a; &load;" 56 | &put; mfs2 -W 4 -M 500 -C 7000; &get -n -m; &save -a; &ps; &synch2 -K 4 -C 500; &lf -K 4 -e; &save -a; &load; &ps; time 57 | 58 | echo "" 59 | echo "&st; &if -sz -C 5 -K 7 -S 44 -a" 60 | &st; &if -sz -C 5 -K 7 -S 44 -a ; &save -a; &load; &ps; time 61 | 62 | echo "" 63 | echo "mfs2 -W 4 -M 1000 -C 7000; " 64 | &put; mfs2 -W 4 -M 1000 -C 7000; &get -n -m; &save -a; &ps; time 65 | 66 | &put 67 | 68 | lutpack -S 1; 69 | 70 | &get -n -m; 71 | 72 | &save -a; 73 | 74 | &load; &ps; 75 | 76 | &put 77 | 78 | echo " " 79 | echo "** ABC AREA Optimization and Mapping done !!!" 80 | &put 81 | -------------------------------------------------------------------------------- /src/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | include(GitRevision) 2 | 3 | find_package(Yosys) 4 | 5 | git_rev_parse(YOSYS_SYN_REVISION ${CMAKE_SOURCE_DIR}) 6 | configure_file(${CMAKE_CURRENT_SOURCE_DIR}/version.h.in ${CMAKE_CURRENT_BINARY_DIR}/version.h) 7 | 8 | add_library(wildebeest SHARED 9 | clk_domains.cc 10 | load_models.cc 11 | time_chrono.cc 12 | report_stat.cc 13 | zeroasic_dsp.cc 14 | cp.cc 15 | obs_clean.cc 16 | synth_fpga.cc 17 | zopt_dff.cc 18 | zopt_const_dff.cc 19 | zqcsat.cc 20 | zsimplemap.cc 21 | ${CMAKE_CURRENT_BINARY_DIR}/version.h 22 | ) 23 | target_include_directories(wildebeest 24 | PRIVATE 25 | ${CMAKE_CURRENT_BINARY_DIR} 26 | ) 27 | target_link_libraries(wildebeest 28 | PRIVATE 29 | yosys::yosys 30 | zeroasic_dsp 31 | ) 32 | target_compile_definitions(wildebeest 33 | PRIVATE 34 | SYN_SHARE_DIR=\"plugins/${OUTPUT_NAME}\" 35 | ) 36 | 37 | set_target_properties(wildebeest PROPERTIES 38 | RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR} 39 | LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR} 40 | # Yosys assumes `.so` to be the suffix on all platforms, so the following is required to make 41 | # `yosys -m wildebeest` to work after installation on any platform. 42 | PREFIX "" 43 | OUTPUT_NAME ${OUTPUT_NAME} 44 | SUFFIX ".so" 45 | ) 46 | 47 | set(SHARE_DIRECTORIES 48 | ff_models 49 | ram_models 50 | lut_models 51 | abc_scripts 52 | ../architecture 53 | ) 54 | 55 | if (WIN32) 56 | # install .dll only 57 | install(TARGETS wildebeest RUNTIME DESTINATION ${YOSYS_DATDIR}/plugins) 58 | else() 59 | # install .so/.dylib only 60 | install(TARGETS wildebeest LIBRARY DESTINATION ${YOSYS_DATDIR}/plugins) 61 | endif() 62 | install(DIRECTORY ${SHARE_DIRECTORIES} DESTINATION ${YOSYS_SHARE_DIR}) 63 | 64 | add_custom_target( 65 | uninstall 66 | COMMAND xargs rm < ${CMAKE_BINARY_DIR}/install_manifest.txt 67 | ) -------------------------------------------------------------------------------- /src/abc_scripts/LUT4/V4/area_lut4.scr: -------------------------------------------------------------------------------- 1 | time 2 | 3 | echo " " 4 | echo "** Starting ABC AREA LUT4 optimization and mapping !!!" 5 | 6 | write_blif in.blif 7 | 8 | &get -n -m 9 | 10 | echo "" 11 | echo "&st; &if -sz -C 5 -K 7 -S 44 -a" 12 | &st; &if -sz -C 5 -K 7 -S 44 -a ; &save -a; &ps; time 13 | &put 14 | 15 | read_blif in.blif 16 | 17 | strash 18 | 19 | echo "" 20 | echo "&fraig" 21 | &get -n 22 | &fraig -x -L 200 23 | &put 24 | 25 | echo "" 26 | echo "dc2" 27 | dc2 28 | 29 | strash 30 | echo "" 31 | echo "dch -f" 32 | dch -f 33 | 34 | echo "" 35 | echo "if -K 4 -a" 36 | if -K 4 -a 37 | &get -n -m; &ps ; &put 38 | 39 | echo "" 40 | echo "mfs2 -W 4 -M 500 -C 7000" 41 | mfs2 -W 4 -M 500 -C 7000 42 | 43 | lutpack -S 1; 44 | 45 | &get -n -m; 46 | 47 | &save -a; 48 | 49 | echo "" 50 | echo "&synch2 -K 4 -C 500; &dch -c 600; &if -K 4 -a; &save -a; &put; mfs2 -W 4 -M 500 -C 7000; &get -n -m; &save -a; &load; &synch2 -K 4 -C 500; &if -K 4 -a; &put; mfs2 -W 4 -M 500 -C 7000; &get -n -m;" 51 | &synch2 -K 4 -C 500; &if -K 4 -a; &save -a; &ps; &load; &put; mfs2 -W 4 -M 500 -C 7000; &get -n -m; &save -a; &ps; &load; &synch2 -K 4 -C 500; &if -K 4 -a; &put; mfs2 -W 4 -M 500 -C 7000; &get -n -m; &save -a; &ps; &load; &ps; time 52 | 53 | 54 | echo "" 55 | echo "mfs2 -W 4 -M 500 -C 7000; &get -n -m; &save -a; &synch2 -K 4 -C 500; &lf -K 4 -e; &save -a; &load;" 56 | &put; mfs2 -W 4 -M 500 -C 7000; &get -n -m; &save -a; &ps; &synch2 -K 4 -C 500; &lf -K 4 -e; &save -a; &load; &ps; time 57 | 58 | echo "" 59 | echo "&st; &if -sz -C 5 -K 7 -S 44 -a" 60 | &st; &if -sz -C 5 -K 7 -S 44 -a ; &save -a; &load; &ps; time 61 | 62 | echo "" 63 | echo "mfs2 -W 4 -M 1000 -C 7000; " 64 | &put; mfs2 -W 4 -M 1000 -C 7000; &get -n -m; &save -a; &ps; time 65 | 66 | &put 67 | 68 | lutpack -S 1; 69 | 70 | &get -n -m; 71 | 72 | &save -a; 73 | 74 | &load; &ps; 75 | 76 | &put 77 | 78 | echo " " 79 | echo "** ABC AREA Optimization and Mapping done !!!" 80 | &put 81 | -------------------------------------------------------------------------------- /src/abc_scripts/LUT5/BEST/small_area_lut5.scr: -------------------------------------------------------------------------------- 1 | time 2 | 3 | echo " " 4 | echo "** Starting ABC SMALL AREA LUT5 optimization and mapping (Zero Asic Corp.)" 5 | echo "" 6 | 7 | write_blif small_area_lut5.blif 8 | 9 | &get -n -m 10 | 11 | &st; &if -sz -C 5 -K 9 -S 55 -a ; &save -a; &ps; time 12 | &put 13 | 14 | read_blif small_area_lut5.blif 15 | 16 | &get -n -m 17 | 18 | &st; &lf -K 5 -e; &save -a; &ps; time 19 | &put 20 | 21 | read_blif small_area_lut5.blif 22 | 23 | &get -n -m 24 | 25 | &put 26 | 27 | read_blif small_area_lut5.blif 28 | 29 | strash 30 | 31 | &get -n 32 | &sopb -C 3 33 | &fraig -x -L 200 34 | &put 35 | 36 | dc2 37 | 38 | strash 39 | dch -f 40 | 41 | if -K 5 -a 42 | &get -n -m; &save -a; &ps ; time 43 | &put 44 | 45 | read_blif small_area_lut5.blif 46 | 47 | strash 48 | 49 | &get -n 50 | &fraig -x -L 200 51 | &put 52 | 53 | dc2 54 | 55 | strash 56 | dch -f 57 | 58 | if -K 5 -a 59 | &get -n -m; &ps ; &save -a; 60 | 61 | &load; 62 | &put 63 | 64 | 65 | mfs2 -W 4 -M 500 -C 7000 66 | 67 | lutpack -S 1; 68 | 69 | &get -n -m; 70 | 71 | &save -a; 72 | 73 | &synch2 -K 5 -C 500; &if -K 5 -a; &save -a; &ps; &load; &put; mfs2 -W 4 -M 500 -C 7000; &get -n -m; &save -a; &ps; &load; &synch2 -K 5 -C 500; &if -K 5 -a; &put; mfs2 -W 4 -M 500 -C 7000; &get -n -m; &save -a; &ps; &load; &ps; time 74 | 75 | 76 | &put; mfs2 -W 4 -M 500 -C 7000; &get -n -m; &save -a; &ps; &synch2 -K 5 -C 500; &lf -K 5 -e; &save -a; &load; &ps; time 77 | 78 | &st; &if -sz -C 5 -K 9 -S 55 -a ; &save -a; &load; &ps; time 79 | 80 | &put; mfs2 -W 4 -M 1000 -C 7000; &get -n -m; &save -a; &ps; time 81 | 82 | &put 83 | 84 | lutpack -S 1; 85 | time 86 | 87 | &get -n -m; 88 | 89 | &save -a; 90 | 91 | &shrink; &dch -s -C 300; &if -sz -C 4 -K 9 -S 55 -a ; &put; mfs2 -W 4 -M 1000 -C 7000; &get -n -m; &save -a; &ps; &load; 92 | time 93 | 94 | &shrink; &dch -s -C 300; &if -sz -C 4 -K 9 -S 55 -a ; &put; mfs2 -W 4 -M 1000 -C 7000; &get -n -m; &save -a; &ps; &load; 95 | time 96 | 97 | &load; &ps; 98 | 99 | &put 100 | 101 | echo " " 102 | echo "** ABC SMALL AREA LUT5 Optimization and Mapping done !!!" 103 | &put 104 | -------------------------------------------------------------------------------- /src/zsimplemap.h: -------------------------------------------------------------------------------- 1 | /* 2 | * yosys -- Yosys Open SYnthesis Suite 3 | * 4 | * Copyright (C) 2012 Claire Xenia Wolf 5 | * 6 | * Permission to use, copy, modify, and/or distribute this software for any 7 | * purpose with or without fee is hereby granted, provided that the above 8 | * copyright notice and this permission notice appear in all copies. 9 | * 10 | * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES 11 | * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF 12 | * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR 13 | * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES 14 | * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN 15 | * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF 16 | * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. 17 | * 18 | */ 19 | 20 | #ifndef SIMPLEMAP_H 21 | #define SIMPLEMAP_H 22 | 23 | #include "kernel/yosys.h" 24 | 25 | YOSYS_NAMESPACE_BEGIN 26 | 27 | extern void zsimplemap_not(RTLIL::Module *module, RTLIL::Cell *cell); 28 | extern void zsimplemap_pos(RTLIL::Module *module, RTLIL::Cell *cell); 29 | extern void zsimplemap_bitop(RTLIL::Module *module, RTLIL::Cell *cell); 30 | extern void zsimplemap_reduce(RTLIL::Module *module, RTLIL::Cell *cell); 31 | extern void zsimplemap_lognot(RTLIL::Module *module, RTLIL::Cell *cell); 32 | extern void zsimplemap_logbin(RTLIL::Module *module, RTLIL::Cell *cell); 33 | extern void zsimplemap_mux(RTLIL::Module *module, RTLIL::Cell *cell); 34 | extern void zsimplemap_bwmux(RTLIL::Module *module, RTLIL::Cell *cell); 35 | extern void zsimplemap_lut(RTLIL::Module *module, RTLIL::Cell *cell); 36 | extern void zsimplemap_slice(RTLIL::Module *module, RTLIL::Cell *cell); 37 | extern void zsimplemap_concat(RTLIL::Module *module, RTLIL::Cell *cell); 38 | extern void zsimplemap_ff(RTLIL::Module *module, RTLIL::Cell *cell); 39 | extern void zsimplemap(RTLIL::Module *module, RTLIL::Cell *cell); 40 | 41 | extern void zsimplemap_get_mappers( 42 | dict &mappers); 43 | 44 | YOSYS_NAMESPACE_END 45 | 46 | #endif 47 | -------------------------------------------------------------------------------- /src/abc_scripts/LUT4/BEST/small_area_lut4.scr: -------------------------------------------------------------------------------- 1 | time 2 | 3 | echo " " 4 | echo "** Starting ABC SMALL AREA LUT4 optimization and mapping (Zero Asic Corp.)" 5 | echo "" 6 | 7 | write_blif small_area.blif 8 | 9 | &get -n -m 10 | 11 | &st; &if -sz -C 5 -K 7 -S 44 -a ; &save -a; &ps; time 12 | &put 13 | 14 | read_blif small_area.blif 15 | 16 | &get -n -m 17 | 18 | &st; &lf -K 4 -e; &save -a; &ps; time 19 | &put 20 | 21 | read_blif small_area.blif 22 | 23 | &get -n -m 24 | 25 | &put 26 | 27 | read_blif small_area.blif 28 | 29 | strash 30 | 31 | &get -n 32 | &sopb -C 3 33 | &fraig -x -L 200 34 | &put 35 | 36 | dc2 37 | 38 | strash 39 | dch -f 40 | 41 | if -K 4 -a 42 | &get -n -m; &save -a; &ps ; time 43 | &put 44 | 45 | read_blif small_area.blif 46 | 47 | strash 48 | 49 | &get -n 50 | &fraig -x -L 200 51 | &put 52 | 53 | dc2 54 | 55 | strash 56 | dch -f 57 | 58 | if -K 4 -a 59 | &get -n -m; &ps ; &save -a; 60 | 61 | &load; 62 | &put 63 | 64 | 65 | mfs2 -W 4 -M 500 -C 7000 66 | 67 | lutpack -S 1; 68 | 69 | &get -n -m; 70 | 71 | &save -a; 72 | 73 | &synch2 -K 4 -C 500; &if -K 4 -a; &save -a; &ps; &load; &put; mfs2 -W 4 -M 500 -C 7000; &get -n -m; &save -a; &ps; &load; &synch2 -K 4 -C 500; &if -K 4 -a; &put; mfs2 -W 4 -M 500 -C 7000; &get -n -m; &save -a; &ps; &load; &ps; time 74 | 75 | 76 | &put; mfs2 -W 4 -M 500 -C 7000; &get -n -m; &save -a; &ps; &synch2 -K 4 -C 500; &lf -K 4 -e; &save -a; &load; &ps; time 77 | 78 | &st; &if -sz -C 5 -K 7 -S 44 -a ; &save -a; &load; &ps; time 79 | 80 | &put; mfs2 -W 4 -M 1000 -C 7000; &get -n -m; &save -a; &ps; time 81 | 82 | &put 83 | 84 | lutpack -S 1; 85 | time 86 | 87 | &get -n -m; 88 | 89 | &save -a; 90 | 91 | &satlut -r; &save -a; &shrink; &dch -s -C 300; &if -sz -C 4 -K 7 -S 44 -a ; &put; mfs2 -W 4 -M 1000 -C 7000; &get -n -m; &satlut; &satlut -r ; &save -a; &ps; &load; 92 | time 93 | 94 | &satlut -r; &save -a; &shrink; &dch -s -C 300; &if -sz -C 4 -K 7 -S 44 -a ; &put; mfs2 -W 4 -M 1000 -C 7000; &get -n -m; &satlut; &satlut -r ; &save -a; &ps; &load; 95 | time 96 | 97 | &load; &ps; 98 | 99 | &put 100 | 101 | echo " " 102 | echo "** ABC SMALL AREA LUT4 Optimization and Mapping done !!!" 103 | &put 104 | -------------------------------------------------------------------------------- /src/abc_scripts/LUT4/V1/small_area_lut4.scr: -------------------------------------------------------------------------------- 1 | time 2 | 3 | echo " " 4 | echo "** Starting ABC SMALL AREA LUT4 optimization and mapping (Zero Asic Corp.)" 5 | echo "" 6 | 7 | write_blif small_area.blif 8 | 9 | &get -n -m 10 | 11 | &st; &if -sz -C 5 -K 7 -S 44 -a ; &save -a; &ps; time 12 | &put 13 | 14 | read_blif small_area.blif 15 | 16 | &get -n -m 17 | 18 | &st; &lf -K 4 -e; &save -a; &ps; time 19 | &put 20 | 21 | read_blif small_area.blif 22 | 23 | &get -n -m 24 | 25 | &put 26 | 27 | read_blif small_area.blif 28 | 29 | strash 30 | 31 | &get -n 32 | &sopb -C 3 33 | &fraig -x -L 200 34 | &put 35 | 36 | dc2 37 | 38 | strash 39 | dch -f 40 | 41 | if -K 4 -a 42 | &get -n -m; &save -a; &ps ; time 43 | &put 44 | 45 | read_blif small_area.blif 46 | 47 | strash 48 | 49 | &get -n 50 | &fraig -x -L 200 51 | &put 52 | 53 | dc2 54 | 55 | strash 56 | dch -f 57 | 58 | if -K 4 -a 59 | &get -n -m; &ps ; &save -a; 60 | 61 | &load; 62 | &put 63 | 64 | 65 | mfs2 -W 4 -M 500 -C 7000 66 | 67 | lutpack -S 1; 68 | 69 | &get -n -m; 70 | 71 | &save -a; 72 | 73 | &synch2 -K 4 -C 500; &if -K 4 -a; &save -a; &ps; &load; &put; mfs2 -W 4 -M 500 -C 7000; &get -n -m; &save -a; &ps; &load; &synch2 -K 4 -C 500; &if -K 4 -a; &put; mfs2 -W 4 -M 500 -C 7000; &get -n -m; &save -a; &ps; &load; &ps; time 74 | 75 | 76 | &put; mfs2 -W 4 -M 500 -C 7000; &get -n -m; &save -a; &ps; &synch2 -K 4 -C 500; &lf -K 4 -e; &save -a; &load; &ps; time 77 | 78 | &st; &if -sz -C 5 -K 7 -S 44 -a ; &save -a; &load; &ps; time 79 | 80 | &put; mfs2 -W 4 -M 1000 -C 7000; &get -n -m; &save -a; &ps; time 81 | 82 | &put 83 | 84 | lutpack -S 1; 85 | time 86 | 87 | &get -n -m; 88 | 89 | &save -a; 90 | 91 | &satlut -r; &save -a; &shrink; &dch -s -C 300; &if -sz -C 4 -K 7 -S 44 -a ; &put; mfs2 -W 4 -M 1000 -C 7000; &get -n -m; &satlut; &satlut -r ; &save -a; &ps; &load; 92 | time 93 | 94 | &satlut -r; &save -a; &shrink; &dch -s -C 300; &if -sz -C 4 -K 7 -S 44 -a ; &put; mfs2 -W 4 -M 1000 -C 7000; &get -n -m; &satlut; &satlut -r ; &save -a; &ps; &load; 95 | time 96 | 97 | &load; &ps; 98 | 99 | &put 100 | 101 | echo " " 102 | echo "** ABC SMALL AREA LUT4 Optimization and Mapping done !!!" 103 | &put 104 | -------------------------------------------------------------------------------- /src/abc_scripts/LUT6/BEST/tiny_delay_lut6.scr: -------------------------------------------------------------------------------- 1 | time 2 | 3 | echo " " 4 | echo "** Starting ABC TINY DELAY LUT6 optimization and mapping (Zero Asic Corp.)" 5 | echo "" 6 | 7 | write_blif tiny_delay_lut6.blif 8 | 9 | &get -n -m 10 | 11 | &st; &if -K 6; &save; &sopb -C 8; &sopb -C 8; &sopb -C 8; &sopb -C 8; &sopb -C 8; &sopb -C 8; &sopb -C 8; &if -K 6 -a; &st; &lf -K 6 -e; &satlut -d ; &dch -C 600; &lf -K 6 -e; &mfs -W 2 -D 15 -M 600 ; &satlut -d ; &save; &load; 12 | 13 | &ps 14 | 15 | &st; &lf -K 6 -e; &ps; &save 16 | &st; &lf -K 6 -e; &satlut -C 100 -d; &ps; 17 | &shrink; &blut -K 6; &sopb -C 8; &synch2 -K 6 -W 2; &if -K 6 -C 16; &save; &shrink; &sopb -C 8; &blut -K 6; &synch2 -W 2 -K 6; &if -K 6 -C 16; &save; &load; &mfs -W 2 -D 15 -C 600 ; &satlut -N 16 -d ; &ps; 18 | &shrink; &blut -K 6; &sopb -C 8; &synch2 -W 2 -K 6; &lf -K 6 -e -C 32; &save; &shrink; &sopb -C 8; &blut -K 6; &synch2 -W 2 -K 6; &lf -K 6 -e -C 32; &save; &load; &mfs -W 2 -D 15 -C 600 ; &satlut -N 16 -d ; &put; lutpack -S 1; &get -n -m; &ps; 19 | &shrink; &sopb -C 8; &blut -K 6; &sopb -C 8; &synch2 -K 6 -W 2; &lf -K 6 -e -C 32; &save; &shrink; &sopb -C 8; &blut -K 6; &synch2 -W 2 -K 6; &lf -e -K 6 -C 32; &save; &load; &mfs -W 2 -D 15 -C 600; &satlut -N 16 -d ; &ps; 20 | &shrink; &blut -K 6; &sopb -C 8; &synch2 -W 2 -K 6; &lf -K 6 -e -C 32; &save; &shrink; &sopb -C 8; &blut -K 6; &synch2 -W 2 -K 6; &lf -K 6 -e -C 32; &save; &load; &mfs -W 2 -D 15 -C 600 ; &satlut -N 16 -d ; &put; lutpack -S 1; &get -n -m; &ps; 21 | &shrink; &sopb -C 8; &blut -K 6; &sopb -C 8; &synch2 -K 6 -W 2; &lf -K 6 -e -C 32; &save; &shrink; &sopb -C 8; &blut -K 6; &synch2 -W 2 -K 6; &lf -e -K 6 -C 32; &save; &load; &mfs -W 2 -D 15 -C 600; &satlut -N 16 -d ; &ps; 22 | &shrink; &blut -K 6; &sopb -C 8; &synch2 -W 2 -K 6; &lf -K 6 -e -C 32; &save; &shrink; &sopb -C 8; &blut -K 6; &synch2 -W 2 -K 6; &lf -K 6 -e -C 32; &save; &load; &mfs -W 2 -D 15 -C 600 ; &satlut -N 16 -d ; &put; lutpack -S 1; &get -n -m; &ps; 23 | &shrink; &sopb -C 8; &blut -K 6; &sopb -C 8; &synch2 -K 6 -W 2; &lf -K 6 -e -C 32; &save; &shrink; &sopb -C 8; &blut -K 6; &synch2 -W 2 -K 6; &lf -e -K 6 -C 32; &save; &load; &mfs -W 2 -D 15 -C 600; &satlut -N 16 -d ; &ps; 24 | &shrink; &blut -K 6; &sopb -C 8; &synch2 -W 2 -K 6; &lf -K 6 -e -C 32; &save; &shrink; &sopb -C 8; &blut -K 6; &synch2 -W 2 -K 6; &lf -K 6 -e -C 32; &save; &load; &mfs -W 2 -D 15 -C 600 ; &satlut -N 16 -d ; &put; lutpack -S 1; &get -n -m; &ps; 25 | &shrink; &sopb -C 8; &blut -K 6; &sopb -C 8; &synch2 -K 6 -W 2; &lf -K 6 -e -C 32; &save; &shrink; &sopb -C 8; &blut -K 6; &synch2 -W 2 -K 6; &lf -e -K 6 -C 32; &save; &load; &mfs -W 2 -D 15 -C 600; &satlut -N 16 -d ; &ps; 26 | 27 | &load; &ps 28 | 29 | echo " " 30 | echo "** ABC TINY DELAY LUT6 Optimization and Mapping done !!!" 31 | &put 32 | 33 | -------------------------------------------------------------------------------- /.github/workflows/build.yml: -------------------------------------------------------------------------------- 1 | name: Build and test 2 | on: 3 | # Runs on pushes to test/ branches and main 4 | push: 5 | branches: 6 | - 'main' 7 | - 'test/**' 8 | # Runs on all PRs 9 | pull_request: 10 | # Manual Dispatch 11 | workflow_dispatch: 12 | 13 | concurrency: 14 | group: build-${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }} 15 | cancel-in-progress: true 16 | 17 | jobs: 18 | build: 19 | runs-on: ubuntu-24.04 20 | strategy: 21 | fail-fast: false 22 | matrix: 23 | yosys_version: 24 | - "0.47" 25 | - "v0.48" 26 | - "v0.49" 27 | - "v0.50" 28 | - "v0.51" 29 | - "v0.52" 30 | - "v0.53" 31 | - "v0.54" 32 | - "v0.55" 33 | - "v0.56" 34 | - "v0.57" 35 | - "v0.58" 36 | steps: 37 | - name: Install Dependencies 38 | shell: bash 39 | run: | 40 | sudo apt-get update 41 | sudo apt-get install -y git build-essential pkg-config cmake ccache gperf bison flex libreadline-dev gawk tcl-dev libffi-dev graphviz xdot python3 libboost-system-dev libboost-python-dev libboost-filesystem-dev zlib1g-dev libfl-dev 42 | - uses: actions/checkout@v4 43 | with: 44 | fetch-depth: 0 45 | - name: Cache Yosys build 46 | id: cache-yosys 47 | uses: actions/cache@v4 48 | env: 49 | cache-name: cache-yosys 50 | with: 51 | path: yosys 52 | key: ${{ runner.os }}-build-${{ env.cache-name }}-${{ matrix.yosys_version }} 53 | - if: ${{ steps.cache-yosys.outputs.cache-hit != 'true' }} 54 | name: Pull Yosys 55 | run: | 56 | git clone --depth 1 --recursive \ 57 | --branch ${{ matrix.yosys_version }} \ 58 | -- https://github.com/YosysHQ/yosys.git yosys 59 | - if: ${{ steps.cache-yosys.outputs.cache-hit != 'true' }} 60 | name: Build Yosys 61 | shell: bash 62 | run: | 63 | cd yosys 64 | make config-gcc 65 | make -j$(nproc) PREFIX=$HOME/.local 66 | - name: Install Yosys 67 | shell: bash 68 | run: | 69 | cd yosys 70 | make install PREFIX=$HOME/.local 71 | - name: Build wildebeest 72 | run: | 73 | export PATH="$HOME/.local/bin:$PATH" 74 | cmake -S . -B build -D YOSYS_PATH="$HOME/.local" 75 | cmake --build build 76 | cmake --install build 77 | - name: Pack build 78 | shell: bash 79 | run: | 80 | tar -cvzf build.tar.gz build/ yosys/ 81 | - name: Store build artifact 82 | uses: actions/upload-artifact@v4 83 | with: 84 | name: build-${{ matrix.yosys_version }}.tar.gz 85 | path: build.tar.gz 86 | retention-days: 1 87 | -------------------------------------------------------------------------------- /src/abc_scripts/LUT4/V6/delay_lut4.scr: -------------------------------------------------------------------------------- 1 | time 2 | echo " " 3 | echo "** Starting ABC DELAY LUT6 optimization and mapping !!!" 4 | 5 | write_blif in.blif 6 | 7 | &get -n -m 8 | 9 | echo "" 10 | echo "&st; &if -sz -C 3 -K 11 -S 66 " 11 | &st; &if -sz -C 3 -K 11 -S 66 ; &save; &ps; time 12 | &put 13 | 14 | read_blif in.blif 15 | 16 | &get -n -m 17 | 18 | echo "" 19 | echo "&st; &if -K 6 ;" 20 | &st; &if -K 6 ; &ps; time 21 | 22 | read_blif in.blif 23 | 24 | &get -n -m 25 | 26 | echo "" 27 | echo "&st; &lf -K 6 -e;" 28 | &st; &lf -K 6 -e; &save; &ps; time 29 | &put 30 | 31 | read_blif in.blif 32 | 33 | &get -n -m; 34 | 35 | echo " " 36 | echo "&st; &lf -K 6 -e; &save; &ps; time" 37 | &st; &lf -K 6 -e; &save; &ps; time 38 | 39 | echo " " 40 | echo "&st; &if -K 6; &save;" 41 | &st; &if -K 6; &ps; &save; time 42 | 43 | echo " " 44 | echo "&sopb -C 5;" 45 | &sopb -C 5; &ps; time 46 | 47 | echo " " 48 | echo "&sopb -C 5;" 49 | &sopb -C 5; &ps; time 50 | 51 | echo " " 52 | echo "&sopb -C 5;" 53 | &sopb -C 5; &ps; time 54 | 55 | echo " " 56 | echo "&sopb -C 5;" 57 | &sopb -C 5; &ps; time 58 | 59 | echo " " 60 | echo "&sopb -C 5;" 61 | &sopb -C 5; &ps; time 62 | 63 | echo " " 64 | echo "&sopb -C 5;" 65 | &sopb -C 5; &ps; time 66 | 67 | echo " " 68 | echo "&sopb -C 5;" 69 | &sopb -C 5; &ps; time 70 | 71 | echo " " 72 | echo "&if -K 6 -a;" 73 | &if -K 6 -a; &ps; time 74 | 75 | echo " " 76 | echo "&st; &lf -K 6 -e;" 77 | &st; &lf -K 6 -e; &ps; time 78 | 79 | echo " " 80 | echo "&dch -C 600; &lf -K 6 -e;" 81 | &dch -C 600; &lf -K 6 -e; &ps; time 82 | 83 | echo " " 84 | echo "&mfs -W 2 -D 15 -M 600" 85 | &mfs -W 2 -D 15 -M 600 ; &save; &ps; time 86 | 87 | echo "" 88 | echo "&load; &ps;" 89 | &load; &ps; time 90 | 91 | echo " " 92 | echo "&shrink; &blut -K 6" 93 | &shrink; &blut -K 6; &ps; time 94 | 95 | echo " " 96 | echo "&sopb -C 5;" 97 | &sopb -C 5; &ps; time 98 | 99 | echo " " 100 | echo "&synch2 -W 2 -K 6;" 101 | &synch2 -W 2 -K 6; &ps; time 102 | 103 | echo " " 104 | echo "&if -sz -C 4 -K 11 -S 66" 105 | &if -sz -C 4 -K 11 -S 66 ; &ps; &save; time 106 | 107 | echo "" 108 | echo "&load; &ps;" 109 | &load; &ps; time 110 | 111 | echo " " 112 | echo "&shrink; &blut -K 6;" 113 | &shrink; &blut -K 6; &ps; time 114 | 115 | echo " " 116 | echo "&sopb -C 5;" 117 | &sopb -C 5; &ps; time 118 | 119 | echo " " 120 | echo "&synch2 -W 2 -K 6; &lf -K 6 -e -C 32;" 121 | &synch2 -W 2 -K 6; &lf -K 6 -e -C 32; &ps; &save; time 122 | 123 | echo " " 124 | echo "&load; &ps" 125 | &load; &ps; time 126 | 127 | echo " " 128 | echo "&mfs -W 2 -D 15 -C 600 ;" 129 | &mfs -W 2 -D 15 -C 600 ; &ps; time 130 | 131 | echo " " 132 | echo "&load; &ps" 133 | &load; &ps; time 134 | 135 | echo " " 136 | echo "lutpack -S 1;" 137 | &put; lutpack -S 1; &get -n -m; &ps; &save; time 138 | 139 | &load; 140 | 141 | echo " " 142 | echo "** ABC DELAY optimization done !!!" 143 | &put 144 | 145 | time 146 | 147 | -------------------------------------------------------------------------------- /src/abc_scripts/LUT6/V5/delay_lut6.scr: -------------------------------------------------------------------------------- 1 | time 2 | echo " " 3 | echo "** Starting ABC DELAY LUT6 optimization and mapping !!!" 4 | 5 | write_blif in.blif 6 | 7 | &get -n -m 8 | 9 | echo "" 10 | echo "&st; &if -sz -C 3 -K 11 -S 66 " 11 | &st; &if -sz -C 3 -K 11 -S 66 ; &save; &ps; time 12 | &put 13 | 14 | read_blif in.blif 15 | 16 | &get -n -m 17 | 18 | echo "" 19 | echo "&st; &if -K 6 ;" 20 | &st; &if -K 6 ; &ps; time 21 | 22 | read_blif in.blif 23 | 24 | &get -n -m 25 | 26 | echo "" 27 | echo "&st; &lf -K 6 -e;" 28 | &st; &lf -K 6 -e; &save; &ps; time 29 | &put 30 | 31 | read_blif in.blif 32 | 33 | &get -n -m; 34 | 35 | echo " " 36 | echo "&st; &lf -K 6 -e; &save; &ps; time" 37 | &st; &lf -K 6 -e; &save; &ps; time 38 | 39 | echo " " 40 | echo "&st; &if -K 6; &save;" 41 | &st; &if -K 6; &ps; &save; time 42 | 43 | echo " " 44 | echo "&sopb -C 5;" 45 | &sopb -C 5; &ps; time 46 | 47 | echo " " 48 | echo "&sopb -C 5;" 49 | &sopb -C 5; &ps; time 50 | 51 | echo " " 52 | echo "&sopb -C 5;" 53 | &sopb -C 5; &ps; time 54 | 55 | echo " " 56 | echo "&sopb -C 5;" 57 | &sopb -C 5; &ps; time 58 | 59 | echo " " 60 | echo "&sopb -C 5;" 61 | &sopb -C 5; &ps; time 62 | 63 | echo " " 64 | echo "&sopb -C 5;" 65 | &sopb -C 5; &ps; time 66 | 67 | echo " " 68 | echo "&sopb -C 5;" 69 | &sopb -C 5; &ps; time 70 | 71 | echo " " 72 | echo "&if -K 6 -a;" 73 | &if -K 6 -a; &ps; time 74 | 75 | echo " " 76 | echo "&st; &lf -K 6 -e;" 77 | &st; &lf -K 6 -e; &ps; time 78 | 79 | echo " " 80 | echo "&dch -C 600; &lf -K 6 -e;" 81 | &dch -C 600; &lf -K 6 -e; &ps; time 82 | 83 | echo " " 84 | echo "&mfs -W 2 -D 15 -M 600" 85 | &mfs -W 2 -D 15 -M 600 ; &save; &ps; time 86 | 87 | echo "" 88 | echo "&load; &ps;" 89 | &load; &ps; time 90 | 91 | echo " " 92 | echo "&shrink; &blut -K 6" 93 | &shrink; &blut -K 6; &ps; time 94 | 95 | echo " " 96 | echo "&sopb -C 5;" 97 | &sopb -C 5; &ps; time 98 | 99 | echo " " 100 | echo "&synch2 -W 2 -K 6;" 101 | &synch2 -W 2 -K 6; &ps; time 102 | 103 | echo " " 104 | echo "&if -sz -C 4 -K 11 -S 66" 105 | &if -sz -C 4 -K 11 -S 66 ; &ps; &save; time 106 | 107 | echo "" 108 | echo "&load; &ps;" 109 | &load; &ps; time 110 | 111 | echo " " 112 | echo "&shrink; &blut -K 6;" 113 | &shrink; &blut -K 6; &ps; time 114 | 115 | echo " " 116 | echo "&sopb -C 5;" 117 | &sopb -C 5; &ps; time 118 | 119 | echo " " 120 | echo "&synch2 -W 2 -K 6; &lf -K 6 -e -C 32;" 121 | &synch2 -W 2 -K 6; &lf -K 6 -e -C 32; &ps; &save; time 122 | 123 | echo " " 124 | echo "&load; &ps" 125 | &load; &ps; time 126 | 127 | echo " " 128 | echo "&mfs -W 2 -D 15 -C 600 ;" 129 | &mfs -W 2 -D 15 -C 600 ; &ps; time 130 | 131 | echo " " 132 | echo "&load; &ps" 133 | &load; &ps; time 134 | 135 | echo " " 136 | echo "lutpack -S 1;" 137 | &put; lutpack -S 1; &get -n -m; &ps; &save; time 138 | 139 | &load; 140 | 141 | echo " " 142 | echo "** ABC DELAY optimization done !!!" 143 | &put 144 | 145 | time 146 | 147 | -------------------------------------------------------------------------------- /src/abc_scripts/LUT6/V6/delay_lut6.scr: -------------------------------------------------------------------------------- 1 | time 2 | echo " " 3 | echo "** Starting ABC DELAY LUT6 optimization and mapping !!!" 4 | 5 | write_blif in.blif 6 | 7 | &get -n -m 8 | 9 | echo "" 10 | echo "&st; &if -sz -C 3 -K 11 -S 66 " 11 | &st; &if -sz -C 3 -K 11 -S 66 ; &save; &ps; time 12 | &put 13 | 14 | read_blif in.blif 15 | 16 | &get -n -m 17 | 18 | echo "" 19 | echo "&st; &if -K 6 ;" 20 | &st; &if -K 6 ; &ps; time 21 | 22 | read_blif in.blif 23 | 24 | &get -n -m 25 | 26 | echo "" 27 | echo "&st; &lf -K 6 -e;" 28 | &st; &lf -K 6 -e; &save; &ps; time 29 | &put 30 | 31 | read_blif in.blif 32 | 33 | &get -n -m; 34 | 35 | echo " " 36 | echo "&st; &lf -K 6 -e; &save; &ps; time" 37 | &st; &lf -K 6 -e; &save; &ps; time 38 | 39 | echo " " 40 | echo "&st; &if -K 6; &save;" 41 | &st; &if -K 6; &ps; &save; time 42 | 43 | echo " " 44 | echo "&sopb -C 5;" 45 | &sopb -C 5; &ps; time 46 | 47 | echo " " 48 | echo "&sopb -C 5;" 49 | &sopb -C 5; &ps; time 50 | 51 | echo " " 52 | echo "&sopb -C 5;" 53 | &sopb -C 5; &ps; time 54 | 55 | echo " " 56 | echo "&sopb -C 5;" 57 | &sopb -C 5; &ps; time 58 | 59 | echo " " 60 | echo "&sopb -C 5;" 61 | &sopb -C 5; &ps; time 62 | 63 | echo " " 64 | echo "&sopb -C 5;" 65 | &sopb -C 5; &ps; time 66 | 67 | echo " " 68 | echo "&sopb -C 5;" 69 | &sopb -C 5; &ps; time 70 | 71 | echo " " 72 | echo "&if -K 6 -a;" 73 | &if -K 6 -a; &ps; time 74 | 75 | echo " " 76 | echo "&st; &lf -K 6 -e;" 77 | &st; &lf -K 6 -e; &ps; time 78 | 79 | echo " " 80 | echo "&dch -C 600; &lf -K 6 -e;" 81 | &dch -C 600; &lf -K 6 -e; &ps; time 82 | 83 | echo " " 84 | echo "&mfs -W 2 -D 15 -M 600" 85 | &mfs -W 2 -D 15 -M 600 ; &save; &ps; time 86 | 87 | echo "" 88 | echo "&load; &ps;" 89 | &load; &ps; time 90 | 91 | echo " " 92 | echo "&shrink; &blut -K 6" 93 | &shrink; &blut -K 6; &ps; time 94 | 95 | echo " " 96 | echo "&sopb -C 5;" 97 | &sopb -C 5; &ps; time 98 | 99 | echo " " 100 | echo "&synch2 -W 2 -K 6;" 101 | &synch2 -W 2 -K 6; &ps; time 102 | 103 | echo " " 104 | echo "&if -sz -C 4 -K 11 -S 66" 105 | &if -sz -C 4 -K 11 -S 66 ; &ps; &save; time 106 | 107 | echo "" 108 | echo "&load; &ps;" 109 | &load; &ps; time 110 | 111 | echo " " 112 | echo "&shrink; &blut -K 6;" 113 | &shrink; &blut -K 6; &ps; time 114 | 115 | echo " " 116 | echo "&sopb -C 5;" 117 | &sopb -C 5; &ps; time 118 | 119 | echo " " 120 | echo "&synch2 -W 2 -K 6; &lf -K 6 -e -C 32;" 121 | &synch2 -W 2 -K 6; &lf -K 6 -e -C 32; &ps; &save; time 122 | 123 | echo " " 124 | echo "&load; &ps" 125 | &load; &ps; time 126 | 127 | echo " " 128 | echo "&mfs -W 2 -D 15 -C 600 ;" 129 | &mfs -W 2 -D 15 -C 600 ; &ps; time 130 | 131 | echo " " 132 | echo "&load; &ps" 133 | &load; &ps; time 134 | 135 | echo " " 136 | echo "lutpack -S 1;" 137 | &put; lutpack -S 1; &get -n -m; &ps; &save; time 138 | 139 | &load; 140 | 141 | echo " " 142 | echo "** ABC DELAY optimization done !!!" 143 | &put 144 | 145 | time 146 | 147 | -------------------------------------------------------------------------------- /src/abc_scripts/LUT6/V7/delay_lut6.scr: -------------------------------------------------------------------------------- 1 | time 2 | echo " " 3 | echo "** Starting ABC DELAY LUT6 optimization and mapping !!!" 4 | 5 | write_blif in.blif 6 | 7 | &get -n -m 8 | 9 | echo "" 10 | echo "&st; &if -sz -C 3 -K 11 -S 66 " 11 | &st; &if -sz -C 3 -K 11 -S 66 ; &save; &ps; time 12 | &put 13 | 14 | read_blif in.blif 15 | 16 | &get -n -m 17 | 18 | echo "" 19 | echo "&st; &if -K 6 ;" 20 | &st; &if -K 6 ; &ps; time 21 | 22 | read_blif in.blif 23 | 24 | &get -n -m 25 | 26 | echo "" 27 | echo "&st; &lf -K 6 -e;" 28 | &st; &lf -K 6 -e; &save; &ps; time 29 | &put 30 | 31 | read_blif in.blif 32 | 33 | &get -n -m; 34 | 35 | echo " " 36 | echo "&st; &lf -K 6 -e; &save; &ps; time" 37 | &st; &lf -K 6 -e; &save; &ps; time 38 | 39 | echo " " 40 | echo "&st; &if -K 6; &save;" 41 | &st; &if -K 6; &ps; &save; time 42 | 43 | echo " " 44 | echo "&sopb -C 5;" 45 | &sopb -C 5; &ps; time 46 | 47 | echo " " 48 | echo "&sopb -C 5;" 49 | &sopb -C 5; &ps; time 50 | 51 | echo " " 52 | echo "&sopb -C 5;" 53 | &sopb -C 5; &ps; time 54 | 55 | echo " " 56 | echo "&sopb -C 5;" 57 | &sopb -C 5; &ps; time 58 | 59 | echo " " 60 | echo "&sopb -C 5;" 61 | &sopb -C 5; &ps; time 62 | 63 | echo " " 64 | echo "&sopb -C 5;" 65 | &sopb -C 5; &ps; time 66 | 67 | echo " " 68 | echo "&sopb -C 5;" 69 | &sopb -C 5; &ps; time 70 | 71 | echo " " 72 | echo "&if -K 6 -a;" 73 | &if -K 6 -a; &ps; time 74 | 75 | echo " " 76 | echo "&st; &lf -K 6 -e;" 77 | &st; &lf -K 6 -e; &ps; time 78 | 79 | echo " " 80 | echo "&dch -C 600; &lf -K 6 -e;" 81 | &dch -C 600; &lf -K 6 -e; &ps; time 82 | 83 | echo " " 84 | echo "&mfs -W 2 -D 15 -M 600" 85 | &mfs -W 2 -D 15 -M 600 ; &save; &ps; time 86 | 87 | echo "" 88 | echo "&load; &ps;" 89 | &load; &ps; time 90 | 91 | echo " " 92 | echo "&shrink; &blut -K 6" 93 | &shrink; &blut -K 6; &ps; time 94 | 95 | echo " " 96 | echo "&sopb -C 5;" 97 | &sopb -C 5; &ps; time 98 | 99 | echo " " 100 | echo "&synch2 -W 2 -K 6;" 101 | &synch2 -W 2 -K 6; &ps; time 102 | 103 | echo " " 104 | echo "&if -sz -C 4 -K 11 -S 66" 105 | &if -sz -C 4 -K 11 -S 66 ; &ps; &save; time 106 | 107 | echo "" 108 | echo "&load; &ps;" 109 | &load; &ps; time 110 | 111 | echo " " 112 | echo "&shrink; &blut -K 6;" 113 | &shrink; &blut -K 6; &ps; time 114 | 115 | echo " " 116 | echo "&sopb -C 5;" 117 | &sopb -C 5; &ps; time 118 | 119 | echo " " 120 | echo "&synch2 -W 2 -K 6; &lf -K 6 -e -C 32;" 121 | &synch2 -W 2 -K 6; &lf -K 6 -e -C 32; &ps; &save; time 122 | 123 | echo " " 124 | echo "&load; &ps" 125 | &load; &ps; time 126 | 127 | echo " " 128 | echo "&mfs -W 2 -D 15 -C 600 ;" 129 | &mfs -W 2 -D 15 -C 600 ; &ps; time 130 | 131 | echo " " 132 | echo "&load; &ps" 133 | &load; &ps; time 134 | 135 | echo " " 136 | echo "lutpack -S 1;" 137 | &put; lutpack -S 1; &get -n -m; &ps; &save; time 138 | 139 | &load; 140 | 141 | echo " " 142 | echo "** ABC DELAY optimization done !!!" 143 | &put 144 | 145 | time 146 | 147 | -------------------------------------------------------------------------------- /src/abc_scripts/LUT6/V8/delay_lut6.scr: -------------------------------------------------------------------------------- 1 | time 2 | echo " " 3 | echo "** Starting ABC DELAY LUT6 optimization and mapping !!!" 4 | 5 | write_blif in.blif 6 | 7 | &get -n -m 8 | 9 | echo "" 10 | echo "&st; &if -sz -C 3 -K 11 -S 66 " 11 | &st; &if -sz -C 3 -K 11 -S 66 ; &save; &ps; time 12 | &put 13 | 14 | read_blif in.blif 15 | 16 | &get -n -m 17 | 18 | echo "" 19 | echo "&st; &if -K 6 ;" 20 | &st; &if -K 6 ; &ps; time 21 | 22 | read_blif in.blif 23 | 24 | &get -n -m 25 | 26 | echo "" 27 | echo "&st; &lf -K 6 -e;" 28 | &st; &lf -K 6 -e; &save; &ps; time 29 | &put 30 | 31 | read_blif in.blif 32 | 33 | &get -n -m; 34 | 35 | echo " " 36 | echo "&st; &lf -K 6 -e; &save; &ps; time" 37 | &st; &lf -K 6 -e; &save; &ps; time 38 | 39 | echo " " 40 | echo "&st; &if -K 6; &save;" 41 | &st; &if -K 6; &ps; &save; time 42 | 43 | echo " " 44 | echo "&sopb -C 5;" 45 | &sopb -C 5; &ps; time 46 | 47 | echo " " 48 | echo "&sopb -C 5;" 49 | &sopb -C 5; &ps; time 50 | 51 | echo " " 52 | echo "&sopb -C 5;" 53 | &sopb -C 5; &ps; time 54 | 55 | echo " " 56 | echo "&sopb -C 5;" 57 | &sopb -C 5; &ps; time 58 | 59 | echo " " 60 | echo "&sopb -C 5;" 61 | &sopb -C 5; &ps; time 62 | 63 | echo " " 64 | echo "&sopb -C 5;" 65 | &sopb -C 5; &ps; time 66 | 67 | echo " " 68 | echo "&sopb -C 5;" 69 | &sopb -C 5; &ps; time 70 | 71 | echo " " 72 | echo "&if -K 6 -a;" 73 | &if -K 6 -a; &ps; time 74 | 75 | echo " " 76 | echo "&st; &lf -K 6 -e;" 77 | &st; &lf -K 6 -e; &ps; time 78 | 79 | echo " " 80 | echo "&dch -C 600; &lf -K 6 -e;" 81 | &dch -C 600; &lf -K 6 -e; &ps; time 82 | 83 | echo " " 84 | echo "&mfs -W 2 -D 15 -M 600" 85 | &mfs -W 2 -D 15 -M 600 ; &save; &ps; time 86 | 87 | echo "" 88 | echo "&load; &ps;" 89 | &load; &ps; time 90 | 91 | echo " " 92 | echo "&shrink; &blut -K 6" 93 | &shrink; &blut -K 6; &ps; time 94 | 95 | echo " " 96 | echo "&sopb -C 5;" 97 | &sopb -C 5; &ps; time 98 | 99 | echo " " 100 | echo "&synch2 -W 2 -K 6;" 101 | &synch2 -W 2 -K 6; &ps; time 102 | 103 | echo " " 104 | echo "&if -sz -C 4 -K 11 -S 66" 105 | &if -sz -C 4 -K 11 -S 66 ; &ps; &save; time 106 | 107 | echo "" 108 | echo "&load; &ps;" 109 | &load; &ps; time 110 | 111 | echo " " 112 | echo "&shrink; &blut -K 6;" 113 | &shrink; &blut -K 6; &ps; time 114 | 115 | echo " " 116 | echo "&sopb -C 5;" 117 | &sopb -C 5; &ps; time 118 | 119 | echo " " 120 | echo "&synch2 -W 2 -K 6; &lf -K 6 -e -C 32;" 121 | &synch2 -W 2 -K 6; &lf -K 6 -e -C 32; &ps; &save; time 122 | 123 | echo " " 124 | echo "&load; &ps" 125 | &load; &ps; time 126 | 127 | echo " " 128 | echo "&mfs -W 2 -D 15 -C 600 ;" 129 | &mfs -W 2 -D 15 -C 600 ; &ps; time 130 | 131 | echo " " 132 | echo "&load; &ps" 133 | &load; &ps; time 134 | 135 | echo " " 136 | echo "lutpack -S 1;" 137 | &put; lutpack -S 1; &get -n -m; &ps; &save; time 138 | 139 | &load; 140 | 141 | echo " " 142 | echo "** ABC DELAY optimization done !!!" 143 | &put 144 | 145 | time 146 | 147 | -------------------------------------------------------------------------------- /src/abc_scripts/LUT6/BEST/tiny_area_lut6.scr: -------------------------------------------------------------------------------- 1 | time 2 | 3 | echo " " 4 | echo "** Starting ABC TINY AREA LUT6 optimization and mapping (Zero Asic Corp.)" 5 | echo "" 6 | 7 | write_blif tiny_area_lut6.blif 8 | 9 | &get -n -m 10 | 11 | &st; &lf -K 6 -e; &ps 12 | &st; &if -K 6 -a; &put; mfs2 -W 4 -M 500 -C 7000; &get -n -m; &save -a; &synch2 -K 6 -C 500; &jf -K 6 -a; &save -a; &st; &if -K 6 -a; &put; mfs2 -W 4 -M 500 -C 7000; &get -n -m; &save -a; &synch2 -K 6 -C 500; &if -K 6 -a; &put; mfs2 -W 4 -M 500 -C 7000; &get -n -m; &save -a; &synch2 -K 6 -C 500; &if -K 6 -a; &put; mfs2 -W 4 -M 500 -C 7000; &get -n -m; &save -a; &synch2 -K 6 -C 500; &if -K 6 -a; &save -a; &load; &ps 13 | &dch -s -C 300; &if -K 6 -a; &satlut; &ps 14 | &synch2; &if -K 6 -a; &put; mfs2 -W 4 -M 1000 -C 7000; &get -n -m; &mfs -W 2 -C 600 -D 25; &satlut; &ps 15 | &shrink; &if -K 6 -a; &satlut; &ps 16 | &synch2; &if -K 6 -a; &put; mfs2 -W 4 -M 1000 -C 7000; &get -n -m; &mfs -W 2 -C 600 -D 25; &satlut; &ps 17 | &shrink; &if -K 6 -a; &satlut; &ps 18 | &shrink; &if -K 6 -a; &mfs -W 2 -C 600 -D 25; &put; mfs2 -W 4 -M 1000 -C 7000; &get -n -m; &satlut; &ps 19 | &dch -s -C 300; &if -K 6 -a; &satlut; &ps 20 | &shrink; &if -K 6 -a; &mfs -W 2 -C 600 -D 25; &put; mfs2 -W 4 -M 1000 -C 7000; &get -n -m; &satlut; &ps 21 | &dch -s -C 300; &if -K 6 -a; &satlut; &ps 22 | &synch2; &if -K 6 -a; &put; mfs2 -W 4 -M 1000 -C 7000; &get -n -m; &mfs -W 2 -C 600 -D 25; &satlut; &ps 23 | &shrink; &if -K 6 -a; &satlut; &ps 24 | &shrink; &if -K 6 -a; &mfs -W 2 -C 600 -D 25; &put; mfs2 -W 4 -M 1000 -C 7000; &get -n -m; &satlut; &ps 25 | &shrink; &if -K 6 -a; &satlut; &ps 26 | &synch2; &if -K 6 -a; &put; mfs2 -W 4 -M 1000 -C 7000; &get -n -m; &mfs -W 2 -C 600 -D 25; &satlut; &ps 27 | &shrink; &if -K 6 -a; &satlut; &ps 28 | &shrink; &if -K 6 -a; &mfs -W 2 -C 600 -D 25; &put; mfs2 -W 4 -M 1000 -C 7000; &get -n -m; &satlut; &ps 29 | &shrink; &if -K 6 -a; &satlut; &ps 30 | &shrink; &if -K 6 -a; &mfs -W 2 -C 600 -D 25; &put; mfs2 -W 4 -M 1000 -C 7000; &get -n -m; &satlut; &ps 31 | &shrink; &if -K 6 -a; &satlut; &ps 32 | &shrink; &if -K 6 -a; &mfs -W 2 -C 600 -D 25; &put; mfs2 -W 4 -M 1000 -C 7000; &get -n -m; &satlut; &ps 33 | &shrink; &if -K 6 -a; &satlut; &ps 34 | &satlut -r -C 500; &save -a; &shrink; &if -sz -C 4 -K 11 -S 66 -a ; &put; mfs2 -W 4 -M 1000 -C 7000; &get -n -m; &satlut; &satlut -r ; &save -a; &load; &ps 35 | &st; &if -sz -C 4 -K 11 -S 66 -a ; &put; mfs2 -W 4 -M 1000 -C 7000; &get -n -m; &satlut; &satlut -r ; &ps 36 | &satlut -r -C 500; &save -a; &shrink; &if -sz -C 4 -K 11 -S 66 -a ; &put; mfs2 -W 4 -M 1000 -C 7000; &get -n -m; &satlut; &satlut -r ; &save -a; &load; &ps 37 | &shrink; &if -K 6 -a; &mfs -W 2 -C 600 -D 25; &put; mfs2 -W 4 -M 1000 -C 7000; &get -n -m; &satlut; &ps 38 | &shrink; &if -K 6 -a; &satlut; &ps 39 | &shrink; &if -K 6 -a; &mfs -W 2 -C 600 -D 25; &put; mfs2 -W 4 -M 1000 -C 7000; &get -n -m; &satlut; &ps 40 | &shrink; &if -K 6 -a; &satlut; &ps 41 | 42 | &load; 43 | 44 | &put 45 | 46 | echo " " 47 | echo "** ABC SMALL AREA LUT6 Optimization and Mapping done !!!" 48 | &put 49 | -------------------------------------------------------------------------------- /src/abc_scripts/LUT6/BEST/delay_lut6.scr: -------------------------------------------------------------------------------- 1 | time 2 | echo " " 3 | echo "** Starting ABC DELAY LUT6 optimization and mapping (Zero Asic Corp.)" 4 | echo "" 5 | 6 | write_blif delay_lut6.blif 7 | 8 | &get -n -m 9 | 10 | &ps 11 | 12 | echo "" 13 | echo "&st; &if -sz -C 3 -K 11 -S 66 " 14 | &st; &if -sz -C 3 -K 11 -S 66 ; &save; &ps; time 15 | &put 16 | 17 | read_blif delay_lut6.blif 18 | 19 | &get -n -m 20 | 21 | echo "" 22 | echo "&st; &if -K 6 ;" 23 | &st; &if -K 6 ; &ps; time 24 | 25 | read_blif delay_lut6.blif 26 | 27 | &get -n -m 28 | 29 | echo "" 30 | echo "&st; &lf -K 6 -e;" 31 | &st; &lf -K 6 -e; &save; &ps; time 32 | &put 33 | 34 | read_blif delay_lut6.blif 35 | 36 | &get -n -m; 37 | 38 | echo " " 39 | echo "&st; &lf -K 6 -e; &save; &ps; time" 40 | &st; &lf -K 6 -e; &save; &ps; time 41 | 42 | echo " " 43 | echo "&st; &if -K 6; &save;" 44 | &st; &if -K 6; &ps; &save; time 45 | 46 | echo " " 47 | echo "&sopb -C 5;" 48 | &sopb -C 5; &ps; time 49 | 50 | echo " " 51 | echo "&sopb -C 5;" 52 | &sopb -C 5; &ps; time 53 | 54 | echo " " 55 | echo "&sopb -C 5;" 56 | &sopb -C 5; &ps; time 57 | 58 | echo " " 59 | echo "&sopb -C 5;" 60 | &sopb -C 5; &ps; time 61 | 62 | echo " " 63 | echo "&sopb -C 5;" 64 | &sopb -C 5; &ps; time 65 | 66 | echo " " 67 | echo "&sopb -C 5;" 68 | &sopb -C 5; &ps; time 69 | 70 | echo " " 71 | echo "&sopb -C 5;" 72 | &sopb -C 5; &ps; time 73 | 74 | echo " " 75 | echo "&if -K 6 -a;" 76 | &if -K 6 -a; &ps; time 77 | 78 | echo " " 79 | echo "&st; &lf -K 6 -e;" 80 | &st; &lf -K 6 -e; &ps; time 81 | 82 | echo " " 83 | echo "&dch -C 600; &lf -K 6 -e;" 84 | &dch -C 600; &lf -K 6 -e; &ps; time 85 | 86 | echo " " 87 | echo "&mfs -W 2 -D 15 -M 600" 88 | &mfs -W 2 -D 15 -M 600 ; &save; &ps; time 89 | 90 | echo "" 91 | echo "&load; &ps;" 92 | &load; &ps; time 93 | 94 | echo " " 95 | echo "&shrink; &blut -K 6" 96 | &shrink; &blut -K 6; &ps; time 97 | 98 | echo " " 99 | echo "&sopb -C 5;" 100 | &sopb -C 5; &ps; time 101 | 102 | echo " " 103 | echo "&synch2 -W 2 -K 6;" 104 | &synch2 -W 2 -K 6; &ps; time 105 | 106 | echo " " 107 | echo "&if -sz -C 4 -K 11 -S 66" 108 | &if -sz -C 4 -K 11 -S 66 ; &ps; &save; time 109 | 110 | echo "" 111 | echo "&load; &ps;" 112 | &load; &ps; time 113 | 114 | echo " " 115 | echo "&shrink; &blut -K 6;" 116 | &shrink; &blut -K 6; &ps; time 117 | 118 | echo " " 119 | echo "&sopb -C 5;" 120 | &sopb -C 5; &ps; time 121 | 122 | echo " " 123 | echo "&synch2 -W 2 -K 6; &lf -K 6 -e -C 32;" 124 | &synch2 -W 2 -K 6; &lf -K 6 -e -C 32; &ps; &save; time 125 | 126 | echo " " 127 | echo "&load; &ps" 128 | &load; &ps; time 129 | 130 | echo " " 131 | echo "&mfs -W 2 -D 15 -C 600 ;" 132 | &mfs -W 2 -D 15 -C 600 ; &ps; time 133 | 134 | echo " " 135 | echo "&load; &ps" 136 | &load; &ps; time 137 | 138 | echo " " 139 | echo "lutpack -S 1;" 140 | &put; lutpack -S 1; &get -n -m; &ps; &save; time 141 | 142 | &load; 143 | 144 | echo " " 145 | echo "** ABC DELAY LUT6 optimization done !!!" 146 | &put 147 | 148 | time 149 | 150 | -------------------------------------------------------------------------------- /architecture/z1060/techlib/tech_flops.v: -------------------------------------------------------------------------------- 1 | // _DFF_P_ covered by dff 2 | (* techmap_celltype = "$_FF_ $_DFF_P_" *) 3 | module tech__DFF_P_ 4 | ( 5 | C, 6 | D, 7 | Q 8 | ); 9 | 10 | input C; 11 | input D; 12 | input Q; 13 | 14 | dff _TECHMAP_REPLACE_ 15 | ( .clk(C), .D(D), .Q(Q) ); 16 | 17 | endmodule 18 | 19 | // _DFFE_PP_ covered by dffe 20 | (* techmap_celltype = "$_DFFE_PP_" *) 21 | module tech__DFFE_PP_ 22 | ( 23 | C, 24 | D, 25 | E, 26 | Q 27 | ); 28 | 29 | input C; 30 | input D; 31 | input E; 32 | input Q; 33 | 34 | dffe _TECHMAP_REPLACE_ 35 | ( .clk(C), .D(D), .E(E), .Q(Q) ); 36 | 37 | endmodule 38 | 39 | // _SDFF_PN1_ covered by dffh 40 | (* techmap_celltype = "$_SDFF_PN1_" *) 41 | module tech__SDFF_PN1_ 42 | ( 43 | C, 44 | D, 45 | R, 46 | Q 47 | ); 48 | 49 | input C; 50 | input D; 51 | input R; 52 | input Q; 53 | 54 | dffh _TECHMAP_REPLACE_ 55 | ( .clk(C), .D(D), .H(R), .Q(Q) ); 56 | 57 | endmodule 58 | 59 | // _SDFF_PN0_ covered by dffl 60 | (* techmap_celltype = "$_SDFF_PN0_" *) 61 | module tech__SDFF_PN0_ 62 | ( 63 | C, 64 | D, 65 | R, 66 | Q 67 | ); 68 | 69 | input C; 70 | input D; 71 | input R; 72 | input Q; 73 | 74 | dffl _TECHMAP_REPLACE_ 75 | ( .clk(C), .D(D), .L(R), .Q(Q) ); 76 | 77 | endmodule 78 | 79 | // _DFF_PN0_ covered by dffr 80 | (* techmap_celltype = "$_DFF_PN0_" *) 81 | module tech__DFF_PN0_ 82 | ( 83 | C, 84 | D, 85 | R, 86 | Q 87 | ); 88 | 89 | input C; 90 | input D; 91 | input R; 92 | input Q; 93 | 94 | dffr _TECHMAP_REPLACE_ 95 | ( .clk(C), .D(D), .R(R), .Q(Q) ); 96 | 97 | endmodule 98 | 99 | // _SDFFE_PN1P_ covered by dffeh 100 | (* techmap_celltype = "$_SDFFE_PN1P_" *) 101 | module tech__SDFFE_PN1P_ 102 | ( 103 | C, 104 | D, 105 | E, 106 | R, 107 | Q 108 | ); 109 | 110 | input C; 111 | input D; 112 | input E; 113 | input R; 114 | input Q; 115 | 116 | dffeh _TECHMAP_REPLACE_ 117 | ( .clk(C), .D(D), .E(E), .H(R), .Q(Q) ); 118 | 119 | endmodule 120 | 121 | // _SDFFE_PN0P_ covered by dffel 122 | (* techmap_celltype = "$_SDFFE_PN0P_" *) 123 | module tech__SDFFE_PN0P_ 124 | ( 125 | C, 126 | D, 127 | E, 128 | R, 129 | Q 130 | ); 131 | 132 | input C; 133 | input D; 134 | input E; 135 | input R; 136 | input Q; 137 | 138 | dffel _TECHMAP_REPLACE_ 139 | ( .clk(C), .D(D), .E(E), .L(R), .Q(Q) ); 140 | 141 | endmodule 142 | 143 | // _DFFE_PN0P_ covered by dffer 144 | (* techmap_celltype = "$_DFFE_PN0P_" *) 145 | module tech__DFFE_PN0P_ 146 | ( 147 | C, 148 | D, 149 | E, 150 | R, 151 | Q 152 | ); 153 | 154 | input C; 155 | input D; 156 | input E; 157 | input R; 158 | input Q; 159 | 160 | dffer _TECHMAP_REPLACE_ 161 | ( .clk(C), .D(D), .E(E), .R(R), .Q(Q) ); 162 | 163 | endmodule 164 | 165 | -------------------------------------------------------------------------------- /src/load_models.cc: -------------------------------------------------------------------------------- 1 | // 2 | // Copyright (C) 2025 Thierry Besson , Zero Asic Corp. 3 | // 4 | /* 5 | * Permission to use, copy, modify, and/or distribute this software for any 6 | * purpose with or without fee is hereby granted, provided that the above 7 | * copyright notice and this permission notice appear in all copies. 8 | * 9 | * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES 10 | * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF 11 | * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR 12 | * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES 13 | * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN 14 | * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF 15 | * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. 16 | * 17 | */ 18 | 19 | #include "kernel/celltypes.h" 20 | #include "kernel/log.h" 21 | #include "kernel/register.h" 22 | #include "kernel/rtlil.h" 23 | #include 24 | 25 | USING_YOSYS_NAMESPACE 26 | PRIVATE_NAMESPACE_BEGIN 27 | 28 | struct LoadModelsPass : public ScriptPass { 29 | // Global data 30 | // 31 | 32 | // Methods 33 | // 34 | LoadModelsPass() : ScriptPass("load_models", "Load Zero Asic RTL models") {} 35 | 36 | void help() override { 37 | // |---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---| 38 | log("\n"); 39 | log(" load_models\n"); 40 | log("\n"); 41 | 42 | help_script(); 43 | log("\n"); 44 | } 45 | 46 | void clear_flags() override {} 47 | 48 | void execute(std::vector args, RTLIL::Design *design) override { 49 | string run_from, run_to; 50 | clear_flags(); 51 | 52 | size_t argidx; 53 | for (argidx = 1; argidx < args.size(); argidx++) { 54 | } 55 | extra_args(args, argidx, design); 56 | 57 | log_header(design, "Executing Zero Asic load models.\n"); 58 | log_push(); 59 | 60 | run_script(design, run_from, run_to); 61 | 62 | log_pop(); 63 | } 64 | 65 | // --------------------------------------------------------------------------- 66 | // load_models 67 | // --------------------------------------------------------------------------- 68 | // 69 | // Obsolete since file names have changed. Needs to be revisited. (Thierry) 70 | // 71 | void script() override { 72 | run("read_verilog +/plugins/wildebeest/ff_models/dff.v"); 73 | run("read_verilog +/plugins/wildebeest/ff_models/dffe.v"); 74 | run("read_verilog +/plugins/wildebeest/ff_models/dffr.v"); 75 | run("read_verilog +/plugins/wildebeest/ff_models/dffs.v"); 76 | run("read_verilog +/plugins/wildebeest/ff_models/dffrs.v"); 77 | run("read_verilog +/plugins/wildebeest/ff_models/dffer.v"); 78 | run("read_verilog +/plugins/wildebeest/ff_models/dffes.v"); 79 | run("read_verilog +/plugins/wildebeest/ff_models/dffers.v"); 80 | 81 | run("read_verilog +/plugins/wildebeest/ram_models/RAM64x12.v"); 82 | 83 | } // end script() 84 | 85 | } LoadModelsPass; 86 | 87 | PRIVATE_NAMESPACE_END 88 | -------------------------------------------------------------------------------- /architecture/z1010/bram/bram_memory_map.txt: -------------------------------------------------------------------------------- 1 | ram block $__tech_spram__ { 2 | abits 14; 3 | widths 1 2 4 8 16 32 per_port; 4 | cost 48; 5 | init none; 6 | byte 8; 7 | 8 | port srsw "A" { 9 | wrbe_separate; 10 | 11 | clock posedge; 12 | clken; 13 | rden; 14 | # read/write modes; adapted from third party 15 | # Goal: cover all the modes that are compatible with a 16 | # conventional memory architecture, which amounts to 17 | # everything except for write first 18 | portoption "WRITE_MODE" "UNDEFINED" { 19 | rdwr undefined; 20 | wrtrans all old; 21 | } 22 | portoption "WRITE_MODE" "NO_CHANGE" { 23 | rdwr no_change; 24 | wrtrans all old; 25 | } 26 | portoption "WRITE_MODE" "READ_FIRST" { 27 | rdwr old; 28 | wrtrans all old; 29 | } 30 | } 31 | } 32 | 33 | ram block $__tech_sdpram__ { 34 | abits 14; 35 | widths 1 2 4 8 16 per_port; 36 | cost 48; 37 | init none; 38 | byte 8; 39 | 40 | port sw "A" { 41 | wrbe_separate; 42 | 43 | option "SYNC_MODE" 1 { 44 | clock posedge "C"; 45 | } 46 | option "SYNC_MODE" 0 { 47 | clock posedge; 48 | } 49 | clken; 50 | # read/write modes; adapted from third party 51 | # Goal: cover all the modes that are compatible with a 52 | # conventional memory architecture, which amounts to 53 | # everything except for write first; on a write only 54 | # port that just boils down to setting the write mode 55 | # to old data 56 | wrtrans all old; 57 | } 58 | port sr "B" { 59 | option "SYNC_MODE" 1 { 60 | clock posedge "C"; 61 | } 62 | option "SYNC_MODE" 0 { 63 | clock posedge; 64 | } 65 | clken; 66 | rden; 67 | # Setting up read mode on the read only port is not 68 | # allowed in yosys, so nothing to add here. Let the 69 | # tool do the work. 70 | } 71 | } 72 | 73 | ram block $__tech_tdpram__ { 74 | abits 14; 75 | widths 1 2 4 8 16 per_port; 76 | cost 48; 77 | init none; 78 | byte 8; 79 | 80 | port srsw "A" "B" { 81 | wrbe_separate; 82 | 83 | option "SYNC_MODE" 1 { 84 | clock posedge "C"; 85 | } 86 | option "SYNC_MODE" 0 { 87 | clock posedge; 88 | } 89 | clken; 90 | rden; 91 | 92 | # Allow ports here to be optional; this gives yosys some flexibility 93 | # to instantiate a TDP port when its ports are not fully utilized 94 | optional_rw; 95 | 96 | # read/write modes; adapted from third party 97 | # Goal: cover all the modes that are compatible with a 98 | # conventional memory architecture, which amounts to 99 | # everything except for write first 100 | portoption "WRITE_MODE" "UNDEFINED" { 101 | rdwr undefined; 102 | wrtrans all old; 103 | } 104 | portoption "WRITE_MODE" "NO_CHANGE" { 105 | rdwr no_change; 106 | wrtrans all old; 107 | } 108 | portoption "WRITE_MODE" "READ_FIRST" { 109 | rdwr old; 110 | wrtrans all old; 111 | } 112 | } 113 | } 114 | -------------------------------------------------------------------------------- /architecture/z1060/bram/bram_memory_map.txt: -------------------------------------------------------------------------------- 1 | ram block $__tech_spram__ { 2 | abits 14; 3 | widths 1 2 4 8 16 32 per_port; 4 | cost 48; 5 | init none; 6 | byte 8; 7 | 8 | port srsw "A" { 9 | wrbe_separate; 10 | 11 | clock posedge; 12 | clken; 13 | rden; 14 | # read/write modes; adapted from third party 15 | # Goal: cover all the modes that are compatible with a 16 | # conventional memory architecture, which amounts to 17 | # everything except for write first 18 | portoption "WRITE_MODE" "UNDEFINED" { 19 | rdwr undefined; 20 | wrtrans all old; 21 | } 22 | portoption "WRITE_MODE" "NO_CHANGE" { 23 | rdwr no_change; 24 | wrtrans all old; 25 | } 26 | portoption "WRITE_MODE" "READ_FIRST" { 27 | rdwr old; 28 | wrtrans all old; 29 | } 30 | } 31 | } 32 | 33 | ram block $__tech_sdpram__ { 34 | abits 14; 35 | widths 1 2 4 8 16 per_port; 36 | cost 48; 37 | init none; 38 | byte 8; 39 | 40 | port sw "A" { 41 | wrbe_separate; 42 | 43 | option "SYNC_MODE" 1 { 44 | clock posedge "C"; 45 | } 46 | option "SYNC_MODE" 0 { 47 | clock posedge; 48 | } 49 | clken; 50 | # read/write modes; adapted from third party 51 | # Goal: cover all the modes that are compatible with a 52 | # conventional memory architecture, which amounts to 53 | # everything except for write first; on a write only 54 | # port that just boils down to setting the write mode 55 | # to old data 56 | wrtrans all old; 57 | } 58 | port sr "B" { 59 | option "SYNC_MODE" 1 { 60 | clock posedge "C"; 61 | } 62 | option "SYNC_MODE" 0 { 63 | clock posedge; 64 | } 65 | clken; 66 | rden; 67 | # Setting up read mode on the read only port is not 68 | # allowed in yosys, so nothing to add here. Let the 69 | # tool do the work. 70 | } 71 | } 72 | 73 | ram block $__tech_tdpram__ { 74 | abits 14; 75 | widths 1 2 4 8 16 per_port; 76 | cost 48; 77 | init none; 78 | byte 8; 79 | 80 | port srsw "A" "B" { 81 | wrbe_separate; 82 | 83 | option "SYNC_MODE" 1 { 84 | clock posedge "C"; 85 | } 86 | option "SYNC_MODE" 0 { 87 | clock posedge; 88 | } 89 | clken; 90 | rden; 91 | 92 | # Allow ports here to be optional; this gives yosys some flexibility 93 | # to instantiate a TDP port when its ports are not fully utilized 94 | optional_rw; 95 | 96 | # read/write modes; adapted from third party 97 | # Goal: cover all the modes that are compatible with a 98 | # conventional memory architecture, which amounts to 99 | # everything except for write first 100 | portoption "WRITE_MODE" "UNDEFINED" { 101 | rdwr undefined; 102 | wrtrans all old; 103 | } 104 | portoption "WRITE_MODE" "NO_CHANGE" { 105 | rdwr no_change; 106 | wrtrans all old; 107 | } 108 | portoption "WRITE_MODE" "READ_FIRST" { 109 | rdwr old; 110 | wrtrans all old; 111 | } 112 | } 113 | } 114 | -------------------------------------------------------------------------------- /src/abc_scripts/LUT4/V4/delay_lut4.scr: -------------------------------------------------------------------------------- 1 | time 2 | echo " " 3 | echo "** Starting ABC DELAY LUT4 optimization and mapping !!!" 4 | 5 | write_blif in.blif 6 | 7 | &get -n -m; 8 | 9 | echo " " 10 | echo "&st; &lf -K 4 -e; &save; &ps; time" 11 | &st; &lf -K 4 -e; &save; &ps; time 12 | 13 | echo " " 14 | echo "&st; &if -K 4; &save;" 15 | &st; &if -K 4; &ps; &save; time 16 | 17 | echo " " 18 | echo "&sopb -C 5;" 19 | &sopb -C 5; &ps; time 20 | 21 | echo " " 22 | echo "&sopb -C 5;" 23 | &sopb -C 5; &ps; time 24 | 25 | echo " " 26 | echo "&sopb -C 5;" 27 | &sopb -C 5; &ps; time 28 | 29 | echo " " 30 | echo "&sopb -C 5;" 31 | &sopb -C 5; &ps; time 32 | 33 | echo " " 34 | echo "&sopb -C 5;" 35 | &sopb -C 5; &ps; time 36 | 37 | echo " " 38 | echo "&sopb -C 5;" 39 | &sopb -C 5; &ps; time 40 | 41 | echo " " 42 | echo "&sopb -C 5;" 43 | &sopb -C 5; &ps; time 44 | 45 | echo " " 46 | echo "&if -K 4 -a;" 47 | &if -K 4 -a; &ps; time 48 | 49 | echo " " 50 | echo "&st; &lf -K 4 -e;" 51 | &st; &lf -K 4 -e; &ps; time 52 | 53 | echo " " 54 | echo "&dch -C 600; &lf -K 4 -e;" 55 | &dch -C 600; &lf -K 4 -e; &ps; time 56 | 57 | echo " " 58 | echo "&mfs -W 2 -D 15 -M 600" 59 | &mfs -W 2 -D 15 -M 600 ; &save; &ps; time 60 | 61 | echo "" 62 | echo "&load; &ps;" 63 | &load; &ps; time 64 | 65 | echo " " 66 | echo "&shrink; &blut -K 4" 67 | &shrink; &blut -K 4; &ps; time 68 | 69 | echo " " 70 | echo "&sopb -C 5;" 71 | &sopb -C 5; &ps; time 72 | 73 | echo " " 74 | echo "&synch2 -W 2 -K 4;" 75 | &synch2 -W 2 -K 4; &ps; time 76 | 77 | echo " " 78 | echo "&if -sz -C 5 -K 7 -S 44" 79 | &if -sz -C 5 -K 7 -S 44 ; &ps; &save; time 80 | 81 | echo "" 82 | echo "&load; &ps;" 83 | &load; &ps; time 84 | 85 | echo " " 86 | echo "&shrink; &blut -K 4;" 87 | &shrink; &blut -K 4; &ps; time 88 | 89 | echo " " 90 | echo "&sopb -C 5;" 91 | &sopb -C 5; &ps; time 92 | 93 | echo " " 94 | echo "&synch2 -W 2 -K 4; &lf -K 4 -e -C 32;" 95 | &synch2 -W 2 -K 4; &lf -K 4 -e -C 32; &ps; &save; time 96 | 97 | echo " " 98 | echo "&shrink; &sopb -C 5; &blut -K 4;" 99 | &shrink; &sopb -C 5; &blut -K 4; &ps; time 100 | 101 | echo " " 102 | echo "&synch2 -W 2 -K 4; &lf -K 4 -e -C 32;" 103 | &synch2 -W 2 -K 4; &lf -K 4 -e -C 32; &ps; &save; time 104 | 105 | echo " " 106 | echo "&load; &ps" 107 | &load; &ps; time 108 | 109 | echo " " 110 | echo "&mfs -W 2 -D 15 -C 600 ;" 111 | &mfs -W 2 -D 15 -C 600 ; &ps; time 112 | 113 | echo " " 114 | echo "lutpack -S 1;" 115 | &put; lutpack -S 1; &get -n -m; &ps; &save; time 116 | 117 | echo " " 118 | echo "&load; &ps" 119 | &load; &ps; time 120 | 121 | echo " " 122 | echo "&shrink; &blut -K 4; &sopb -C 5;" 123 | &shrink; &blut -K 4; &sopb -C 5; &ps; time 124 | 125 | echo " " 126 | echo "&synch2 -W 2 -K 4; &if -sz -C 5 -K 7 -S 44" 127 | &synch2 -W 2 -K 4; &if -sz -C 5 -K 7 -S 44 ; &ps; &save; time 128 | 129 | echo " " 130 | echo "&load; &ps" 131 | &load; &ps; time 132 | 133 | echo "&satlut -d -N 31; " 134 | &satlut -d -N 31; &ps; &save; time 135 | 136 | echo " " 137 | echo "Final stat: " 138 | echo " " 139 | &load; &ps; time 140 | 141 | echo " " 142 | echo "** ABC DELAY optimization and mapping done !!!" 143 | &put 144 | 145 | time 146 | 147 | -------------------------------------------------------------------------------- /src/zqcsat.h: -------------------------------------------------------------------------------- 1 | /* -*- c++ -*- 2 | * yosys -- Yosys Open SYnthesis Suite 3 | * 4 | * Copyright (C) 2021 Marcelina Kościelnicka 5 | * Copyright (C) 2025 Thierry Besson , Zero Asic Corp. 6 | * 7 | * Permission to use, copy, modify, and/or distribute this software for any 8 | * purpose with or without fee is hereby granted, provided that the above 9 | * copyright notice and this permission notice appear in all copies. 10 | * 11 | * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES 12 | * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF 13 | * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR 14 | * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES 15 | * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN 16 | * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF 17 | * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. 18 | * 19 | */ 20 | 21 | #ifndef QCSAT_H 22 | #define QCSAT_H 23 | 24 | #include "kernel/modtools.h" 25 | #include "kernel/satgen.h" 26 | 27 | YOSYS_NAMESPACE_BEGIN 28 | 29 | // This is a helper class meant for easy construction of quick SAT queries 30 | // to a combinatorial input cone of some set of signals, meant for SAT-based 31 | // optimizations. Various knobs are provided to set just how much of the 32 | // cone should be included in the model — since this class is meant for 33 | // optimization, it should not be a correctness problem when some cells are 34 | // skipped and the solver spuriously returns SAT with a solution that 35 | // cannot exist in reality due to skipped constraints (ie. only UNSAT results 36 | // from this class should be considered binding). 37 | struct ZQuickConeSat { 38 | ModWalker &modwalker; 39 | ezSatPtr ez; 40 | SatGen satgen; 41 | 42 | // The effort level knobs. 43 | 44 | // The maximum "complexity level" of cells that will be imported. 45 | // - 1: bitwise operations, muxes, equality comparisons, lut, sop, fa 46 | // - 2: addition, subtraction, greater/less than comparisons, lcu 47 | // - 3: shifts 48 | // - 4: multiplication, division, power 49 | int max_cell_complexity = 2; 50 | // The maximum number of cells to import, or 0 for no limit. 51 | int max_cell_count = 0; 52 | // If non-0, skip importing cells with more than this number of output bits. 53 | int max_cell_outs = 0; 54 | 55 | // Internal state. 56 | pool imported_cells; 57 | pool imported_onehot; 58 | pool bits_queue; 59 | 60 | ZQuickConeSat(ModWalker &modwalker) 61 | : modwalker(modwalker), ez(), satgen(ez.get(), &modwalker.sigmap) {} 62 | 63 | // Imports a signal into the SAT solver, queues its input cone to be 64 | // imported in the next prepare() call. 65 | std::vector importSig(SigSpec sig); 66 | int importSigBit(SigBit bit); 67 | 68 | // Imports the input cones of all previously importSig'd signals into 69 | // the SAT solver. 70 | void prepare(); 71 | 72 | // Returns the "complexity level" of a given cell. 73 | static int cell_complexity(RTLIL::Cell *cell); 74 | 75 | int nbImportedCells(); 76 | }; 77 | 78 | YOSYS_NAMESPACE_END 79 | 80 | #endif 81 | -------------------------------------------------------------------------------- /architecture/z1010/bram/bram_memory_map_with_init.txt: -------------------------------------------------------------------------------- 1 | ram block $__tech_spram__ { 2 | abits 14; 3 | widths 1 2 4 8 16 32 per_port; 4 | cost 48; 5 | # INIT is supported 6 | #init none; 7 | init any; 8 | byte 8; 9 | 10 | port srsw "A" { 11 | wrbe_separate; 12 | 13 | clock posedge; 14 | clken; 15 | rden; 16 | # read/write modes; adapted from third party 17 | # Goal: cover all the modes that are compatible with a 18 | # conventional memory architecture, which amounts to 19 | # everything except for write first 20 | portoption "WRITE_MODE" "UNDEFINED" { 21 | rdwr undefined; 22 | wrtrans all old; 23 | } 24 | portoption "WRITE_MODE" "NO_CHANGE" { 25 | rdwr no_change; 26 | wrtrans all old; 27 | } 28 | portoption "WRITE_MODE" "READ_FIRST" { 29 | rdwr old; 30 | wrtrans all old; 31 | } 32 | } 33 | } 34 | 35 | ram block $__tech_sdpram__ { 36 | abits 14; 37 | widths 1 2 4 8 16 per_port; 38 | cost 48; 39 | # INIT is supported 40 | #init none; 41 | init any; 42 | byte 8; 43 | 44 | port sw "A" { 45 | wrbe_separate; 46 | 47 | option "SYNC_MODE" 1 { 48 | clock posedge "C"; 49 | } 50 | option "SYNC_MODE" 0 { 51 | clock posedge; 52 | } 53 | clken; 54 | # read/write modes; adapted from third party 55 | # Goal: cover all the modes that are compatible with a 56 | # conventional memory architecture, which amounts to 57 | # everything except for write first; on a write only 58 | # port that just boils down to setting the write mode 59 | # to old data 60 | wrtrans all old; 61 | } 62 | port sr "B" { 63 | option "SYNC_MODE" 1 { 64 | clock posedge "C"; 65 | } 66 | option "SYNC_MODE" 0 { 67 | clock posedge; 68 | } 69 | clken; 70 | rden; 71 | # Setting up read mode on the read only port is not 72 | # allowed in yosys, so nothing to add here. Let the 73 | # tool do the work. 74 | } 75 | } 76 | 77 | ram block $__tech_tdpram__ { 78 | abits 14; 79 | widths 1 2 4 8 16 per_port; 80 | cost 48; 81 | # INIT is supported 82 | #init none; 83 | init any; 84 | byte 8; 85 | 86 | port srsw "A" "B" { 87 | wrbe_separate; 88 | 89 | option "SYNC_MODE" 1 { 90 | clock posedge "C"; 91 | } 92 | option "SYNC_MODE" 0 { 93 | clock posedge; 94 | } 95 | clken; 96 | rden; 97 | 98 | # Allow ports here to be optional; this gives yosys some flexibility 99 | # to instantiate a TDP port when its ports are not fully utilized 100 | optional_rw; 101 | 102 | # read/write modes; adapted from third party 103 | # Goal: cover all the modes that are compatible with a 104 | # conventional memory architecture, which amounts to 105 | # everything except for write first 106 | portoption "WRITE_MODE" "UNDEFINED" { 107 | rdwr undefined; 108 | wrtrans all old; 109 | } 110 | portoption "WRITE_MODE" "NO_CHANGE" { 111 | rdwr no_change; 112 | wrtrans all old; 113 | } 114 | portoption "WRITE_MODE" "READ_FIRST" { 115 | rdwr old; 116 | wrtrans all old; 117 | } 118 | } 119 | } 120 | -------------------------------------------------------------------------------- /src/abc_scripts/LUT6/V3/delay_lut6.scr: -------------------------------------------------------------------------------- 1 | time 2 | echo " " 3 | echo "** Starting ABC DELAY LUT6 optimization and mapping !!!" 4 | 5 | write_blif in.blif 6 | 7 | &get -n -m 8 | 9 | echo "" 10 | echo "&st; &if -sz -C 3 -K 11 -S 66 " 11 | &st; &if -sz -C 3 -K 11 -S 66 ; &save; &ps; time 12 | &put 13 | 14 | read_blif in.blif 15 | 16 | &get -n -m 17 | 18 | echo "" 19 | echo "&st; &if -K 6 ;" 20 | &st; &if -K 6 ; &ps; time 21 | 22 | read_blif in.blif 23 | 24 | &get -n -m 25 | 26 | echo "" 27 | echo "&st; &lf -K 6 -e;" 28 | &st; &lf -K 6 -e; &save; &ps; time 29 | &put 30 | 31 | read_blif in.blif 32 | 33 | &get -n -m; 34 | 35 | echo " " 36 | echo "&st; &lf -K 6 -e; &save; &ps; time" 37 | &st; &lf -K 6 -e; &save; &ps; time 38 | 39 | echo " " 40 | echo "&st; &if -K 6; &save;" 41 | &st; &if -K 6; &ps; &save; time 42 | 43 | echo " " 44 | echo "&sopb -C 5;" 45 | &sopb -C 5; &ps; time 46 | 47 | echo " " 48 | echo "&sopb -C 5;" 49 | &sopb -C 5; &ps; time 50 | 51 | echo " " 52 | echo "&sopb -C 5;" 53 | &sopb -C 5; &ps; time 54 | 55 | echo " " 56 | echo "&sopb -C 5;" 57 | &sopb -C 5; &ps; time 58 | 59 | echo " " 60 | echo "&sopb -C 5;" 61 | &sopb -C 5; &ps; time 62 | 63 | echo " " 64 | echo "&sopb -C 5;" 65 | &sopb -C 5; &ps; time 66 | 67 | echo " " 68 | echo "&sopb -C 5;" 69 | &sopb -C 5; &ps; time 70 | 71 | echo " " 72 | echo "&if -K 6 -a;" 73 | &if -K 6 -a; &ps; time 74 | 75 | echo " " 76 | echo "&st; &lf -K 6 -e;" 77 | &st; &lf -K 6 -e; &ps; time 78 | 79 | echo " " 80 | echo "&dch -C 600; &lf -K 6 -e;" 81 | &dch -C 600; &lf -K 6 -e; &ps; time 82 | 83 | echo " " 84 | echo "&mfs -W 2 -D 15 -M 600" 85 | &mfs -W 2 -D 15 -M 600 ; &save; &ps; time 86 | 87 | echo "" 88 | echo "&load; &ps;" 89 | &load; &ps; time 90 | 91 | echo " " 92 | echo "&shrink; &blut -K 6" 93 | &shrink; &blut -K 6; &ps; time 94 | 95 | echo " " 96 | echo "&sopb -C 5;" 97 | &sopb -C 5; &ps; time 98 | 99 | echo " " 100 | echo "&synch2 -W 2 -K 6;" 101 | &synch2 -W 2 -K 6; &ps; time 102 | 103 | echo " " 104 | echo "&if -sz -C 4 -K 11 -S 66" 105 | &if -sz -C 4 -K 11 -S 66 ; &ps; &save; time 106 | 107 | echo "" 108 | echo "&load; &ps;" 109 | &load; &ps; time 110 | 111 | echo " " 112 | echo "&shrink; &blut -K 6;" 113 | &shrink; &blut -K 6; &ps; time 114 | 115 | echo " " 116 | echo "&sopb -C 5;" 117 | &sopb -C 5; &ps; time 118 | 119 | echo " " 120 | echo "&synch2 -W 2 -K 6; &lf -K 6 -e -C 32;" 121 | &synch2 -W 2 -K 6; &lf -K 6 -e -C 32; &ps; &save; time 122 | 123 | echo " " 124 | echo "&load; &ps" 125 | &load; &ps; time 126 | 127 | echo " " 128 | echo "&mfs -W 2 -D 15 -C 600 ;" 129 | &mfs -W 2 -D 15 -C 600 ; &ps; time 130 | 131 | echo " " 132 | echo "&load; &ps" 133 | &load; &ps; time 134 | 135 | echo " " 136 | echo "&shrink; &dch -s -C 300; &if -sz -C 4 -K 11 -S 66 -a ; &put; mfs2 -W 4 -M 1000 -C 7000; &get -n -m; &satlut -r" 137 | &satlut -r; &save; &shrink; &dch -s -C 300; &if -sz -C 4 -K 11 -S 66 -a ; &put; mfs2 -W 4 -M 1000 -C 7000; &get -n -m; &satlut -r ; &save; &load; &ps; time 138 | 139 | echo " " 140 | echo "lutpack -S 1;" 141 | &put; lutpack -S 1; &get -n -m; &ps; &save; time 142 | 143 | &load; 144 | 145 | echo " " 146 | echo "** ABC DELAY optimization done !!!" 147 | &put 148 | 149 | time 150 | 151 | -------------------------------------------------------------------------------- /src/abc_scripts/LUT4/V4/small_area_lut4.scr: -------------------------------------------------------------------------------- 1 | time 2 | 3 | echo " " 4 | echo "** Starting ABC AREA LUT4 optimization and mapping !!!" 5 | 6 | write_blif in.blif 7 | 8 | &get -n -m 9 | 10 | echo "" 11 | echo "&st; &if -sz -C 5 -K 7 -S 44 -a" 12 | &st; &if -sz -C 5 -K 7 -S 44 -a ; &save -a; &ps; time 13 | &put 14 | 15 | read_blif in.blif 16 | 17 | &get -n -m 18 | 19 | echo "" 20 | echo "&st; &lf -K 4 -e;" 21 | &st; &lf -K 4 -e; &save -a; &ps; time 22 | &put 23 | 24 | read_blif in.blif 25 | 26 | &get -n -m 27 | 28 | echo "" 29 | &st; &lf -K 4 -e; &save -a; &ps; time 30 | &put 31 | 32 | read_blif in.blif 33 | 34 | strash 35 | 36 | echo "" 37 | echo "&fraig" 38 | &get -n 39 | &sopb -C 3 40 | &fraig -x -L 200 41 | &put 42 | 43 | echo "" 44 | echo "dc2" 45 | dc2 46 | 47 | strash 48 | echo "" 49 | echo "dch -f" 50 | dch -f 51 | 52 | echo "" 53 | echo "if -K 4 -a" 54 | if -K 4 -a 55 | &get -n -m; &save -a; &ps ; time 56 | &put 57 | 58 | read_blif in.blif 59 | 60 | strash 61 | 62 | echo "" 63 | echo "&fraig" 64 | &get -n 65 | &fraig -x -L 200 66 | &put 67 | 68 | echo "" 69 | echo "dc2" 70 | dc2 71 | 72 | strash 73 | echo "" 74 | echo "dch -f" 75 | dch -f 76 | 77 | echo "" 78 | echo "if -K 4 -a" 79 | if -K 4 -a 80 | &get -n -m; &ps ; &save -a; 81 | 82 | &load; 83 | &put 84 | 85 | 86 | echo "" 87 | echo "mfs2 -W 4 -M 500 -C 7000" 88 | mfs2 -W 4 -M 500 -C 7000 89 | 90 | lutpack -S 1; 91 | 92 | &get -n -m; 93 | 94 | &save -a; 95 | 96 | echo "" 97 | echo "&synch2 -K 4 -C 500; &dch -c 600; &if -K 4 -a; &save -a; &put; mfs2 -W 4 -M 500 -C 7000; &get -n -m; &save -a; &load; &synch2 -K 4 -C 500; &if -K 4 -a; &put; mfs2 -W 4 -M 500 -C 7000; &get -n -m;" 98 | &synch2 -K 4 -C 500; &if -K 4 -a; &save -a; &ps; &load; &put; mfs2 -W 4 -M 500 -C 7000; &get -n -m; &save -a; &ps; &load; &synch2 -K 4 -C 500; &if -K 4 -a; &put; mfs2 -W 4 -M 500 -C 7000; &get -n -m; &save -a; &ps; &load; &ps; time 99 | 100 | 101 | echo "" 102 | echo "mfs2 -W 4 -M 500 -C 7000; &get -n -m; &save -a; &synch2 -K 4 -C 500; &lf -K 4 -e; &save -a; &load;" 103 | &put; mfs2 -W 4 -M 500 -C 7000; &get -n -m; &save -a; &ps; &synch2 -K 4 -C 500; &lf -K 4 -e; &save -a; &load; &ps; time 104 | 105 | echo "" 106 | echo "&st; &if -sz -C 5 -K 7 -S 44 -a" 107 | &st; &if -sz -C 5 -K 7 -S 44 -a ; &save -a; &load; &ps; time 108 | 109 | echo "" 110 | echo "mfs2 -W 4 -M 1000 -C 7000; " 111 | &put; mfs2 -W 4 -M 1000 -C 7000; &get -n -m; &save -a; &ps; time 112 | 113 | &put 114 | 115 | lutpack -S 1; 116 | 117 | &get -n -m; 118 | 119 | &save -a; 120 | 121 | echo "" 122 | echo "&satlut -r -C 500; &save -a; &shrink; &dch -s -C 300; &if -sz -C 4 -K 7 -S 44 -a ; &put; mfs2 -W 4 -M 1000 -C 7000; &get -n -m; &satlut; &satlut -r ; &save -a; &load;" 123 | &satlut -r; &save -a; &shrink; &dch -s -C 300; &if -sz -C 4 -K 7 -S 44 -a ; &put; mfs2 -W 4 -M 1000 -C 7000; &get -n -m; &satlut; &satlut -r ; &save -a; &ps; &load; 124 | 125 | echo "" 126 | echo "&satlut -r -C 500; &save -a; &shrink; &dch -s -C 300; &if -sz -C 4 -K 7 -S 44 -a ; &put; mfs2 -W 4 -M 1000 -C 7000; &get -n -m; &satlut; &satlut -r ; &save -a; &load;" 127 | &satlut -r; &save -a; &shrink; &dch -s -C 300; &if -sz -C 4 -K 7 -S 44 -a ; &put; mfs2 -W 4 -M 1000 -C 7000; &get -n -m; &satlut; &satlut -r ; &save -a; &ps; &load; 128 | 129 | &load; &ps; 130 | 131 | &put 132 | 133 | echo " " 134 | echo "** ABC AREA Optimization and Mapping done !!!" 135 | &put 136 | -------------------------------------------------------------------------------- /src/abc_scripts/LUT5/BEST/tiny_area_lut5.scr: -------------------------------------------------------------------------------- 1 | time 2 | 3 | echo " " 4 | echo "** Starting ABC TINY AREA LUT5 optimization and mapping (Zero Asic Corp.)" 5 | echo "" 6 | 7 | write_blif tiny_area_lut5.blif 8 | 9 | &get -n -m 10 | 11 | &st; &if -sz -C 5 -K 9 -S 55 -a ; &save -a; &ps; time 12 | &put 13 | 14 | read_blif tiny_area_lut5.blif 15 | 16 | &get -n -m 17 | 18 | &st; &lf -K 5 -e; &save -a; &ps; time 19 | &put 20 | 21 | read_blif tiny_area_lut5.blif 22 | 23 | &get -n -m 24 | 25 | &put 26 | 27 | read_blif tiny_area_lut5.blif 28 | 29 | strash 30 | 31 | &get -n 32 | &sopb -C 3 33 | &fraig -x -L 200 34 | &put 35 | 36 | dc2 37 | 38 | strash 39 | dch -f 40 | 41 | if -K 5 -a 42 | &get -n -m; &save -a; &ps ; time 43 | &put 44 | 45 | read_blif tiny_area_lut5.blif 46 | 47 | strash 48 | 49 | &get -n 50 | &fraig -x -L 200 51 | &put 52 | 53 | dc2 54 | 55 | strash 56 | dch -f 57 | 58 | if -K 5 -a 59 | &get -n -m; &ps ; &save -a; 60 | 61 | &load; 62 | &put 63 | 64 | 65 | mfs2 -W 4 -M 500 -C 7000 66 | 67 | lutpack -S 1; 68 | 69 | &get -n -m; 70 | 71 | &save -a; 72 | 73 | &synch2 -K 5 -C 500; &if -K 5 -a; &save -a; &ps; &load; &put; mfs2 -W 4 -M 500 -C 7000; &get -n -m; &save -a; &ps; &load; &synch2 -K 5 -C 500; &if -K 5 -a; &put; mfs2 -W 4 -M 500 -C 7000; &get -n -m; &save -a; &ps; &load; &ps; time 74 | 75 | 76 | &put; mfs2 -W 4 -M 500 -C 7000; &get -n -m; &save -a; &ps; &synch2 -K 5 -C 500; &lf -K 5 -e; &save -a; &load; &ps; time 77 | 78 | &st; &if -sz -C 5 -K 9 -S 55 -a ; &save -a; &load; &ps; time 79 | 80 | &put; mfs2 -W 4 -M 1000 -C 7000; &get -n -m; &save -a; &ps; time 81 | 82 | &put 83 | 84 | lutpack -S 1; 85 | time 86 | 87 | &get -n -m; 88 | 89 | &save -a; 90 | 91 | &shrink; &dch -s -C 300; &if -sz -C 4 -K 9 -S 55 -a ; &put; mfs2 -W 4 -M 1000 -C 7000; &get -n -m; &save -a; &ps; &load; 92 | time 93 | 94 | &shrink; &dch -s -C 300; &if -sz -C 4 -K 9 -S 55 -a ; &put; mfs2 -W 4 -M 1000 -C 7000; &get -n -m; &save -a; &ps; &load; 95 | time 96 | 97 | &load; &ps; 98 | 99 | &shrink; &dch -s -C 300; &if -sz -C 4 -K 9 -S 55 -a ; &put; mfs2 -W 4 -M 1000 -C 7000; &get -n -m; &save -a; &ps; time 100 | 101 | &shrink; &dch -s -C 300; &if -sz -C 4 -K 9 -S 55 -a ; &put; mfs2 -W 4 -M 1000 -C 7000; &get -n -m; &save -a; &ps; time 102 | 103 | &shrink; &dch -s -C 300; &if -sz -C 4 -K 9 -S 55 -a ; &put; mfs2 -W 4 -M 1000 -C 7000; &get -n -m; &save -a; &ps; time 104 | 105 | 106 | read_blif tiny_area_lut5.blif 107 | 108 | &st; &lf -K 5 -e; &save -a; &ps; 109 | &st; &if -K 5 -a; &put; mfs2 -W 4 -M 500 -C 7000; &get -n -m; &save -a; &synch2 -K 5 -C 500; &lf -K 5 -e; &save -a; &st; &if -K 5 -a; &put; mfs2 -W 4 -M 500 -C 7000; &get -n -m; &save -a; &synch2 -K 5 -C 500; &if -K 5 -a; &put; mfs2 -W 4 -M 500 -C 7000; &get -n -m; &save -a; &synch2 -K 5 -C 500; &if -K 5 -a; &put; mfs2 -W 4 -M 500 -C 7000; &get -n -m; &save -a; &synch2 -K 5 -C 500; &if -K 5 -a; &save -a; &load; &ps; 110 | &dch -s -C 300; &if -K 5 -a; &save -a; &ps; 111 | &synch2; &if -K 5 -a; &put; mfs2 -W 4 -M 1000 -C 7000; &get -n -m; &mfs -W 2 -C 600 -D 25; &save -a; &ps; 112 | &dch -s -C 300; &if -K 5 -a; &save -a; &ps; 113 | &synch2; &if -K 5 -a; &put; mfs2 -W 4 -M 1000 -C 7000; &get -n -m; &mfs -W 2 -C 600 -D 25; &save -a; &ps; 114 | &dch -s -C 300; &if -K 5 -a; &ps; 115 | &save -a; 116 | 117 | &load 118 | &put 119 | 120 | lutpack -S 1 121 | 122 | &get -n -m; 123 | &save -a; 124 | &load 125 | 126 | &ps 127 | 128 | &put 129 | 130 | echo " " 131 | echo "** ABC TINY AREA LUT5 Optimization and Mapping done !!!" 132 | -------------------------------------------------------------------------------- /src/abc_scripts/LUT4/V5/delay_lut4.scr: -------------------------------------------------------------------------------- 1 | time 2 | echo " " 3 | echo "** Starting ABC DELAY LUT4 optimization and mapping !!!" 4 | 5 | write_blif in.blif 6 | 7 | &get -n -m; 8 | 9 | echo " " 10 | echo "&st; &lf -K 4 -e; &save; &ps; time" 11 | &st; &lf -K 4 -e; &save; &ps; time 12 | 13 | echo " " 14 | echo "&st; &if -K 4; &save;" 15 | &st; &if -K 4; &ps; &save; time 16 | 17 | echo " " 18 | echo "&sopb -C 5;" 19 | &sopb -C 5; &ps; time 20 | 21 | echo " " 22 | echo "&sopb -C 5;" 23 | &sopb -C 5; &ps; time 24 | 25 | echo " " 26 | echo "&sopb -C 5;" 27 | &sopb -C 5; &ps; time 28 | 29 | echo " " 30 | echo "&sopb -C 5;" 31 | &sopb -C 5; &ps; time 32 | 33 | echo " " 34 | echo "&sopb -C 5;" 35 | &sopb -C 5; &ps; time 36 | 37 | echo " " 38 | echo "&sopb -C 5;" 39 | &sopb -C 5; &ps; time 40 | 41 | echo " " 42 | echo "&sopb -C 5;" 43 | &sopb -C 5; &ps; time 44 | 45 | echo " " 46 | echo "&if -K 4 -a;" 47 | &if -K 4 -a; &ps; time 48 | 49 | echo " " 50 | echo "&st; &lf -K 4 -e;" 51 | &st; &lf -K 4 -e; &ps; time 52 | 53 | echo " " 54 | echo "&dch -C 600; &lf -K 4 -e;" 55 | &dch -C 600; &lf -K 4 -e; &ps; time 56 | 57 | echo " " 58 | echo "&mfs -W 2 -D 15 -M 600" 59 | &mfs -W 2 -D 15 -M 600 ; &save; &ps; time 60 | 61 | echo "" 62 | echo "&load; &ps;" 63 | &load; &ps; time 64 | 65 | echo " " 66 | echo "&shrink; &blut -K 4" 67 | &shrink; &blut -K 4; &ps; time 68 | 69 | echo " " 70 | echo "&sopb -C 5;" 71 | &sopb -C 5; &ps; time 72 | 73 | echo " " 74 | echo "&synch2 -W 2 -K 4;" 75 | &synch2 -W 2 -K 4; &ps; time 76 | 77 | echo " " 78 | echo "&if -sz -C 5 -K 7 -S 44" 79 | &if -sz -C 5 -K 7 -S 44 ; &ps; &save; time 80 | 81 | echo "" 82 | echo "&load; &ps;" 83 | &load; &ps; time 84 | 85 | echo " " 86 | echo "&shrink; &blut -K 4;" 87 | &shrink; &blut -K 4; &ps; time 88 | 89 | echo " " 90 | echo "&sopb -C 5;" 91 | &sopb -C 5; &ps; time 92 | 93 | echo " " 94 | echo "&synch2 -W 2 -K 4; &lf -K 4 -e -C 32;" 95 | &synch2 -W 2 -K 4; &lf -K 4 -e -C 32; &ps; &save; time 96 | 97 | echo " " 98 | echo "&shrink; &sopb -C 5; &blut -K 4;" 99 | &shrink; &sopb -C 5; &blut -K 4; &ps; time 100 | 101 | echo " " 102 | echo "&synch2 -W 2 -K 4; &lf -K 4 -e -C 32;" 103 | &synch2 -W 2 -K 4; &lf -K 4 -e -C 32; &ps; &save; time 104 | 105 | echo " " 106 | echo "&load; &ps" 107 | &load; &ps; time 108 | 109 | echo " " 110 | echo "&mfs -W 2 -D 15 -C 600 ;" 111 | &mfs -W 2 -D 15 -C 600 ; &ps; time 112 | 113 | echo " " 114 | echo "lutpack -S 3;" 115 | &put; lutpack -S 3; &get -n -m; &ps; &save; time 116 | 117 | echo " " 118 | echo "&load; &ps" 119 | &load; &ps; time 120 | 121 | echo " " 122 | echo "&shrink; &blut -K 4; &sopb -C 5;" 123 | &shrink; &blut -K 4; &sopb -C 5; &ps; time 124 | 125 | echo " " 126 | echo "&synch2 -W 2 -K 4; &if -sz -C 5 -K 7 -S 44" 127 | &synch2 -W 2 -K 4; &if -sz -C 5 -K 7 -S 44 ; &ps; &save; time 128 | 129 | echo " " 130 | echo "&load; &ps" 131 | &load; &ps; time 132 | 133 | echo "&satlut -d -N 31; " 134 | &satlut -d -N 31; &ps; &save; time 135 | 136 | echo " " 137 | echo "&sopb -C 5; &ps; time" 138 | &sopb -C 5; &ps; time 139 | 140 | echo " " 141 | echo "&synch2 -W 2 -K 4; &lf -K 4 -e -C 32; &ps; &save; time" 142 | &synch2 -W 2 -K 4; &lf -K 4 -e -C 32; &ps; &save; time 143 | 144 | echo " " 145 | echo "&put; lutpack -S 3; &get -n -m; &ps; &save; time" 146 | &put; lutpack -S 3; &get -n -m; &ps; &save; time 147 | 148 | &load; 149 | 150 | echo " " 151 | echo "Final stat: " 152 | echo " " 153 | &load; &ps -s; time 154 | 155 | echo " " 156 | echo "** ABC DELAY optimization done !!!" 157 | &put 158 | 159 | write_blif out.blif 160 | time 161 | 162 | echo "" 163 | echo "" 164 | echo "Skip Equivalence Checking ..." 165 | echo "Skip cec in.blif out.blif; time" 166 | echo "" 167 | echo "" 168 | 169 | time 170 | 171 | -------------------------------------------------------------------------------- /src/abc_scripts/LUT4/V1/tiny_area_lut4.scr: -------------------------------------------------------------------------------- 1 | time 2 | 3 | echo " " 4 | echo "** Starting ABC TINY AREA LUT4 optimization and mapping (Zero Asic Corp.)" 5 | echo "" 6 | 7 | write_blif tiny_area_lut4.blif 8 | 9 | &get -n -m 10 | 11 | &st; &if -sz -C 5 -K 7 -S 44 -a ; &save -a; &ps; time 12 | &put 13 | 14 | read_blif tiny_area_lut4.blif 15 | 16 | &get -n -m 17 | 18 | &st; &lf -K 4 -e; &save -a; &ps; time 19 | &put 20 | 21 | read_blif tiny_area_lut4.blif 22 | 23 | &get -n -m 24 | 25 | &put 26 | 27 | read_blif tiny_area_lut4.blif 28 | 29 | strash 30 | 31 | &get -n 32 | &sopb -C 3 33 | &fraig -x -L 200 34 | &put 35 | 36 | dc2 37 | 38 | strash 39 | dch -f 40 | 41 | if -K 4 -a 42 | &get -n -m; &save -a; &ps ; time 43 | &put 44 | 45 | read_blif tiny_area_lut4.blif 46 | 47 | strash 48 | 49 | &get -n 50 | &fraig -x -L 200 51 | &put 52 | 53 | dc2 54 | 55 | strash 56 | dch -f 57 | 58 | if -K 4 -a 59 | &get -n -m; &ps ; &save -a; 60 | 61 | &load; 62 | &put 63 | 64 | 65 | mfs2 -W 4 -M 500 -C 7000 66 | 67 | lutpack -S 1; 68 | 69 | &get -n -m; 70 | 71 | &save -a; 72 | 73 | &synch2 -K 4 -C 500; &if -K 4 -a; &save -a; &ps; &load; &put; mfs2 -W 4 -M 500 -C 7000; &get -n -m; &save -a; &ps; &load; &synch2 -K 4 -C 500; &if -K 4 -a; &put; mfs2 -W 4 -M 500 -C 7000; &get -n -m; &save -a; &ps; &load; &ps; time 74 | 75 | 76 | &put; mfs2 -W 4 -M 500 -C 7000; &get -n -m; &save -a; &ps; &synch2 -K 4 -C 500; &lf -K 4 -e; &save -a; &load; &ps; time 77 | 78 | &st; &if -sz -C 5 -K 7 -S 44 -a ; &save -a; &load; &ps; time 79 | 80 | &put; mfs2 -W 4 -M 1000 -C 7000; &get -n -m; &save -a; &ps; time 81 | 82 | &put 83 | 84 | lutpack -S 1; 85 | time 86 | 87 | &get -n -m; 88 | 89 | &save -a; 90 | 91 | &satlut -r; &save -a; &shrink; &dch -s -C 300; &if -sz -C 4 -K 7 -S 44 -a ; &put; mfs2 -W 4 -M 1000 -C 7000; &get -n -m; &satlut; &satlut -r ; &save -a; &ps; &load; 92 | time 93 | 94 | &satlut -r; &save -a; &shrink; &dch -s -C 300; &if -sz -C 4 -K 7 -S 44 -a ; &put; mfs2 -W 4 -M 1000 -C 7000; &get -n -m; &satlut; &satlut -r ; &save -a; &ps; &load; 95 | time 96 | 97 | &load; &ps; 98 | 99 | &satlut -r -C 500; &save -a; &shrink; &dch -s -C 300; &if -sz -C 4 -K 7 -S 44 -a ; &put; mfs2 -W 4 -M 1000 -C 7000; &get -n -m; &satlut; &satlut -r ; &save -a; &ps; time 100 | 101 | &satlut -r -C 500; &save -a; &shrink; &dch -s -C 300; &if -sz -C 4 -K 7 -S 44 -a ; &put; mfs2 -W 4 -M 1000 -C 7000; &get -n -m; &satlut; &satlut -r ; &save -a; &ps; time 102 | 103 | &satlut -r -C 500; &save -a; &shrink; &dch -s -C 300; &if -sz -C 4 -K 7 -S 44 -a ; &put; mfs2 -W 4 -M 1000 -C 7000; &get -n -m; &satlut; &satlut -r ; &save -a; &ps; time 104 | 105 | 106 | read_blif tiny_area_lut4.blif 107 | 108 | &st; &lf -K 4 -e; &save -a; &ps; 109 | &st; &if -K 4 -a; &put; mfs2 -W 4 -M 500 -C 7000; &get -n -m; &save -a; &synch2 -K 4 -C 500; &lf -K 4 -e; &save -a; &st; &if -K 4 -a; &put; mfs2 -W 4 -M 500 -C 7000; &get -n -m; &save -a; &synch2 -K 4 -C 500; &if -K 4 -a; &put; mfs2 -W 4 -M 500 -C 7000; &get -n -m; &save -a; &synch2 -K 4 -C 500; &if -K 4 -a; &put; mfs2 -W 4 -M 500 -C 7000; &get -n -m; &save -a; &synch2 -K 4 -C 500; &if -K 4 -a; &save -a; &load; &ps; 110 | &dch -s -C 300; &if -K 4 -a; &satlut; &save -a; &ps; 111 | &synch2; &if -K 4 -a; &put; mfs2 -W 4 -M 1000 -C 7000; &get -n -m; &mfs -W 2 -C 600 -D 25; &satlut; &save -a; &ps; 112 | &dch -s -C 300; &if -K 4 -a; &satlut; &save -a; &ps; 113 | &synch2; &if -K 4 -a; &put; mfs2 -W 4 -M 1000 -C 7000; &get -n -m; &mfs -W 2 -C 600 -D 25; &satlut; &save -a; &ps; 114 | &dch -s -C 300; &if -K 4 -a; &satlut; &ps; 115 | &save -a; 116 | 117 | &load 118 | &put 119 | 120 | lutpack -S 1 121 | 122 | &get -n -m; 123 | &satlut -N 64 124 | &save -a; 125 | &load 126 | 127 | &ps 128 | 129 | &put 130 | 131 | echo " " 132 | echo "** ABC TINY AREA LUT4 Optimization and Mapping done !!!" 133 | -------------------------------------------------------------------------------- /src/abc_scripts/LUT4/BEST/tiny_area_lut4.scr: -------------------------------------------------------------------------------- 1 | time 2 | 3 | echo " " 4 | echo "** Starting ABC TINY AREA LUT4 optimization and mapping (Zero Asic Corp.)" 5 | echo "" 6 | 7 | write_blif tiny_area_lut4.blif 8 | 9 | &get -n -m 10 | 11 | &st; &if -sz -C 5 -K 7 -S 44 -a ; &save -a; &ps; time 12 | &put 13 | 14 | read_blif tiny_area_lut4.blif 15 | 16 | &get -n -m 17 | 18 | &st; &lf -K 4 -e; &save -a; &ps; time 19 | &put 20 | 21 | read_blif tiny_area_lut4.blif 22 | 23 | &get -n -m 24 | 25 | &put 26 | 27 | read_blif tiny_area_lut4.blif 28 | 29 | strash 30 | 31 | &get -n 32 | &sopb -C 3 33 | &fraig -x -L 200 34 | &put 35 | 36 | dc2 37 | 38 | strash 39 | dch -f 40 | 41 | if -K 4 -a 42 | &get -n -m; &save -a; &ps ; time 43 | &put 44 | 45 | read_blif tiny_area_lut4.blif 46 | 47 | strash 48 | 49 | &get -n 50 | &fraig -x -L 200 51 | &put 52 | 53 | dc2 54 | 55 | strash 56 | dch -f 57 | 58 | if -K 4 -a 59 | &get -n -m; &ps ; &save -a; 60 | 61 | &load; 62 | &put 63 | 64 | 65 | mfs2 -W 4 -M 500 -C 7000 66 | 67 | lutpack -S 1; 68 | 69 | &get -n -m; 70 | 71 | &save -a; 72 | 73 | &synch2 -K 4 -C 500; &if -K 4 -a; &save -a; &ps; &load; &put; mfs2 -W 4 -M 500 -C 7000; &get -n -m; &save -a; &ps; &load; &synch2 -K 4 -C 500; &if -K 4 -a; &put; mfs2 -W 4 -M 500 -C 7000; &get -n -m; &save -a; &ps; &load; &ps; time 74 | 75 | 76 | &put; mfs2 -W 4 -M 500 -C 7000; &get -n -m; &save -a; &ps; &synch2 -K 4 -C 500; &lf -K 4 -e; &save -a; &load; &ps; time 77 | 78 | &st; &if -sz -C 5 -K 7 -S 44 -a ; &save -a; &load; &ps; time 79 | 80 | &put; mfs2 -W 4 -M 1000 -C 7000; &get -n -m; &save -a; &ps; time 81 | 82 | &put 83 | 84 | lutpack -S 1; 85 | time 86 | 87 | &get -n -m; 88 | 89 | &save -a; 90 | 91 | &satlut -r; &save -a; &shrink; &dch -s -C 300; &if -sz -C 4 -K 7 -S 44 -a ; &put; mfs2 -W 4 -M 1000 -C 7000; &get -n -m; &satlut; &satlut -r ; &save -a; &ps; &load; 92 | time 93 | 94 | &satlut -r; &save -a; &shrink; &dch -s -C 300; &if -sz -C 4 -K 7 -S 44 -a ; &put; mfs2 -W 4 -M 1000 -C 7000; &get -n -m; &satlut; &satlut -r ; &save -a; &ps; &load; 95 | time 96 | 97 | &load; &ps; 98 | 99 | &satlut -r -C 500; &save -a; &shrink; &dch -s -C 300; &if -sz -C 4 -K 7 -S 44 -a ; &put; mfs2 -W 4 -M 1000 -C 7000; &get -n -m; &satlut; &satlut -r ; &save -a; &ps; time 100 | 101 | &satlut -r -C 500; &save -a; &shrink; &dch -s -C 300; &if -sz -C 4 -K 7 -S 44 -a ; &put; mfs2 -W 4 -M 1000 -C 7000; &get -n -m; &satlut; &satlut -r ; &save -a; &ps; time 102 | 103 | &satlut -r -C 500; &save -a; &shrink; &dch -s -C 300; &if -sz -C 4 -K 7 -S 44 -a ; &put; mfs2 -W 4 -M 1000 -C 7000; &get -n -m; &satlut; &satlut -r ; &save -a; &ps; time 104 | 105 | 106 | read_blif tiny_area_lut4.blif 107 | 108 | &st; &lf -K 4 -e; &save -a; &ps; 109 | &st; &if -K 4 -a; &put; mfs2 -W 4 -M 500 -C 7000; &get -n -m; &save -a; &synch2 -K 4 -C 500; &lf -K 4 -e; &save -a; &st; &if -K 4 -a; &put; mfs2 -W 4 -M 500 -C 7000; &get -n -m; &save -a; &synch2 -K 4 -C 500; &if -K 4 -a; &put; mfs2 -W 4 -M 500 -C 7000; &get -n -m; &save -a; &synch2 -K 4 -C 500; &if -K 4 -a; &put; mfs2 -W 4 -M 500 -C 7000; &get -n -m; &save -a; &synch2 -K 4 -C 500; &if -K 4 -a; &save -a; &load; &ps; 110 | &dch -s -C 300; &if -K 4 -a; &satlut; &save -a; &ps; 111 | &synch2; &if -K 4 -a; &put; mfs2 -W 4 -M 1000 -C 7000; &get -n -m; &mfs -W 2 -C 600 -D 25; &satlut; &save -a; &ps; 112 | &dch -s -C 300; &if -K 4 -a; &satlut; &save -a; &ps; 113 | &synch2; &if -K 4 -a; &put; mfs2 -W 4 -M 1000 -C 7000; &get -n -m; &mfs -W 2 -C 600 -D 25; &satlut; &save -a; &ps; 114 | &dch -s -C 300; &if -K 4 -a; &satlut; &ps; 115 | &save -a; 116 | 117 | &load 118 | &put 119 | 120 | lutpack -S 1 121 | 122 | &get -n -m; 123 | &satlut -N 64 124 | &save -a; 125 | &load 126 | 127 | &ps 128 | 129 | &put 130 | 131 | echo " " 132 | echo "** ABC TINY AREA LUT4 Optimization and Mapping done !!!" 133 | -------------------------------------------------------------------------------- /src/abc_scripts/LUT4/V2/delay_lut4.scr: -------------------------------------------------------------------------------- 1 | time 2 | echo " " 3 | echo "** Starting ABC DELAY LUT4 optimization and mapping !!!" 4 | 5 | write_blif in.blif 6 | 7 | &get -n -m; 8 | 9 | echo " " 10 | echo "&st; &lf -K 4 -e; &save; &ps; time" 11 | &st; &lf -K 4 -e; &save; &ps; time 12 | 13 | echo " " 14 | echo "&st; &if -K 4; &save;" 15 | &st; &if -K 4; &ps; &save; time 16 | 17 | echo " " 18 | echo "&sopb -C 5;" 19 | &sopb -C 5; &ps; time 20 | 21 | echo " " 22 | echo "&sopb -C 5;" 23 | &sopb -C 5; &ps; time 24 | 25 | echo " " 26 | echo "&sopb -C 5;" 27 | &sopb -C 5; &ps; time 28 | 29 | echo " " 30 | echo "&sopb -C 5;" 31 | &sopb -C 5; &ps; time 32 | 33 | echo " " 34 | echo "&sopb -C 5;" 35 | &sopb -C 5; &ps; time 36 | 37 | echo " " 38 | echo "&sopb -C 5;" 39 | &sopb -C 5; &ps; time 40 | 41 | echo " " 42 | echo "&sopb -C 5;" 43 | &sopb -C 5; &ps; time 44 | 45 | echo " " 46 | echo "&if -K 4 -a;" 47 | &if -K 4 -a; &ps; time 48 | 49 | echo " " 50 | echo "&st; &lf -K 4 -e;" 51 | &st; &lf -K 4 -e; &ps; time 52 | 53 | echo " " 54 | echo "&dch -C 600; &lf -K 4 -e;" 55 | &dch -C 600; &lf -K 4 -e; &ps; time 56 | 57 | echo " " 58 | echo "&mfs -W 2 -D 15 -M 600" 59 | &mfs -W 2 -D 15 -M 600 ; &save; &ps; time 60 | 61 | echo "" 62 | echo "&load; &ps;" 63 | &load; &ps; time 64 | 65 | echo " " 66 | echo "&shrink; &blut -K 4" 67 | &shrink; &blut -K 4; &ps; time 68 | 69 | echo " " 70 | echo "&sopb -C 5;" 71 | &sopb -C 5; &ps; time 72 | 73 | echo " " 74 | echo "&synch2 -W 2 -K 4;" 75 | &synch2 -W 2 -K 4; &ps; time 76 | 77 | echo " " 78 | echo "&if -sz -C 5 -K 7 -S 44" 79 | &if -sz -C 5 -K 7 -S 44 ; &ps; &save; time 80 | 81 | echo "" 82 | echo "&load; &ps;" 83 | &load; &ps; time 84 | 85 | echo " " 86 | echo "&shrink; &blut -K 4;" 87 | &shrink; &blut -K 4; &ps; time 88 | 89 | echo " " 90 | echo "&sopb -C 5;" 91 | &sopb -C 5; &ps; time 92 | 93 | echo " " 94 | echo "&synch2 -W 2 -K 4; &lf -K 4 -e -C 32;" 95 | &synch2 -W 2 -K 4; &lf -K 4 -e -C 32; &ps; &save; time 96 | 97 | echo " " 98 | echo "&shrink; &sopb -C 5; &blut -K 4;" 99 | &shrink; &sopb -C 5; &blut -K 4; &ps; time 100 | 101 | echo " " 102 | echo "&synch2 -W 2 -K 4; &lf -K 4 -e -C 32;" 103 | &synch2 -W 2 -K 4; &lf -K 4 -e -C 32; &ps; &save; time 104 | 105 | echo " " 106 | echo "&load; &ps" 107 | &load; &ps; time 108 | 109 | echo " " 110 | echo "&mfs -W 2 -D 15 -C 600 ;" 111 | &mfs -W 2 -D 15 -C 600 ; &ps; time 112 | 113 | echo " " 114 | echo "lutpack -S 1;" 115 | &put; lutpack -S 1; &get -n -m; &ps; &save; time 116 | 117 | echo " " 118 | echo "&load; &ps" 119 | &load; &ps; time 120 | 121 | echo " " 122 | echo "&shrink; &blut -K 4; &sopb -C 5;" 123 | &shrink; &blut -K 4; &sopb -C 5; &ps; time 124 | 125 | echo " " 126 | echo "&synch2 -W 2 -K 4; &if -sz -C 5 -K 7 -S 44" 127 | &synch2 -W 2 -K 4; &if -sz -C 5 -K 7 -S 44 ; &ps; &save; time 128 | 129 | echo " " 130 | echo "&load; &ps" 131 | &load; &ps; time 132 | 133 | echo "&satlut -d -N 31; " 134 | &satlut -d -N 31; &ps; &save; time 135 | 136 | echo " " 137 | echo "&sopb -C 5; &ps; time" 138 | &sopb -C 5; &ps; time 139 | 140 | echo " " 141 | echo "&synch2 -W 2 -K 4; &lf -K 4 -e -C 32; &ps; &save; time" 142 | &synch2 -W 2 -K 4; &lf -K 4 -e -C 32; &ps; &save; time 143 | 144 | echo " " 145 | echo "&sopb -C 5; &ps; time" 146 | &sopb -C 5; &ps; time 147 | 148 | echo " " 149 | echo "&synch2 -W 2 -K 4; &lf -K 4 -e -C 32; &ps; &save; time" 150 | &synch2 -W 2 -K 4; &lf -K 4 -e -C 32; &ps; &save; time 151 | 152 | echo " " 153 | echo "&put; lutpack -S 1; &get -n -m; &ps; &save; time" 154 | &put; lutpack -S 1; &get -n -m; &ps; &save; time 155 | 156 | echo " " 157 | echo "Final stat: " 158 | echo " " 159 | &load; &ps -s; time 160 | 161 | echo " " 162 | echo "** ABC DELAY optimization done !!!" 163 | &put 164 | 165 | write_blif out.blif 166 | time 167 | 168 | echo "" 169 | echo "" 170 | echo "Skip Equivalence Checking ..." 171 | echo "Skip cec in.blif out.blif; time" 172 | echo "" 173 | echo "" 174 | 175 | time 176 | 177 | -------------------------------------------------------------------------------- /src/abc_scripts/LUT4/V3/delay_lut4.scr: -------------------------------------------------------------------------------- 1 | time 2 | echo " " 3 | echo "** Starting ABC DELAY LUT4 optimization and mapping !!!" 4 | 5 | write_blif in.blif 6 | 7 | &get -n -m; 8 | 9 | echo " " 10 | echo "&st; &lf -K 4 -e; &save; &ps; time" 11 | &st; &lf -K 4 -e; &save; &ps; time 12 | 13 | echo " " 14 | echo "&st; &if -K 4; &save;" 15 | &st; &if -K 4; &ps; &save; time 16 | 17 | echo " " 18 | echo "&sopb -C 5;" 19 | &sopb -C 5; &ps; time 20 | 21 | echo " " 22 | echo "&sopb -C 5;" 23 | &sopb -C 5; &ps; time 24 | 25 | echo " " 26 | echo "&sopb -C 5;" 27 | &sopb -C 5; &ps; time 28 | 29 | echo " " 30 | echo "&sopb -C 5;" 31 | &sopb -C 5; &ps; time 32 | 33 | echo " " 34 | echo "&sopb -C 5;" 35 | &sopb -C 5; &ps; time 36 | 37 | echo " " 38 | echo "&sopb -C 5;" 39 | &sopb -C 5; &ps; time 40 | 41 | echo " " 42 | echo "&sopb -C 5;" 43 | &sopb -C 5; &ps; time 44 | 45 | echo " " 46 | echo "&if -K 4 -a;" 47 | &if -K 4 -a; &ps; time 48 | 49 | echo " " 50 | echo "&st; &lf -K 4 -e;" 51 | &st; &lf -K 4 -e; &ps; time 52 | 53 | echo " " 54 | echo "&dch -C 600; &lf -K 4 -e;" 55 | &dch -C 600; &lf -K 4 -e; &ps; time 56 | 57 | echo " " 58 | echo "&mfs -W 2 -D 15 -M 600" 59 | &mfs -W 2 -D 15 -M 600 ; &save; &ps; time 60 | 61 | echo "" 62 | echo "&load; &ps;" 63 | &load; &ps; time 64 | 65 | echo " " 66 | echo "&shrink; &blut -K 4" 67 | &shrink; &blut -K 4; &ps; time 68 | 69 | echo " " 70 | echo "&sopb -C 5;" 71 | &sopb -C 5; &ps; time 72 | 73 | echo " " 74 | echo "&synch2 -W 2 -K 4;" 75 | &synch2 -W 2 -K 4; &ps; time 76 | 77 | echo " " 78 | echo "&if -sz -C 5 -K 7 -S 44" 79 | &if -sz -C 5 -K 7 -S 44 ; &ps; &save; time 80 | 81 | echo "" 82 | echo "&load; &ps;" 83 | &load; &ps; time 84 | 85 | echo " " 86 | echo "&shrink; &blut -K 4;" 87 | &shrink; &blut -K 4; &ps; time 88 | 89 | echo " " 90 | echo "&sopb -C 5;" 91 | &sopb -C 5; &ps; time 92 | 93 | echo " " 94 | echo "&synch2 -W 2 -K 4; &lf -K 4 -e -C 32;" 95 | &synch2 -W 2 -K 4; &lf -K 4 -e -C 32; &ps; &save; time 96 | 97 | echo " " 98 | echo "&shrink; &sopb -C 5; &blut -K 4;" 99 | &shrink; &sopb -C 5; &blut -K 4; &ps; time 100 | 101 | echo " " 102 | echo "&synch2 -W 2 -K 4; &lf -K 4 -e -C 32;" 103 | &synch2 -W 2 -K 4; &lf -K 4 -e -C 32; &ps; &save; time 104 | 105 | echo " " 106 | echo "&load; &ps" 107 | &load; &ps; time 108 | 109 | echo " " 110 | echo "&mfs -W 2 -D 15 -C 600 ;" 111 | &mfs -W 2 -D 15 -C 600 ; &ps; time 112 | 113 | echo " " 114 | echo "lutpack -S 3;" 115 | &put; lutpack -S 3; &get -n -m; &ps; &save; time 116 | 117 | echo " " 118 | echo "&load; &ps" 119 | &load; &ps; time 120 | 121 | echo " " 122 | echo "&shrink; &blut -K 4; &sopb -C 5;" 123 | &shrink; &blut -K 4; &sopb -C 5; &ps; time 124 | 125 | echo " " 126 | echo "&synch2 -W 2 -K 4; &if -sz -C 5 -K 7 -S 44" 127 | &synch2 -W 2 -K 4; &if -sz -C 5 -K 7 -S 44 ; &ps; &save; time 128 | 129 | echo " " 130 | echo "&load; &ps" 131 | &load; &ps; time 132 | 133 | echo "&satlut -d -N 31; " 134 | &satlut -d -N 31; &ps; &save; time 135 | 136 | echo " " 137 | echo "&sopb -C 5; &ps; time" 138 | &sopb -C 5; &ps; time 139 | 140 | echo " " 141 | echo "&synch2 -W 2 -K 4; &lf -K 4 -e -C 32; &ps; &save; time" 142 | &synch2 -W 2 -K 4; &lf -K 4 -e -C 32; &ps; &save; time 143 | 144 | echo " " 145 | echo "&sopb -C 5; &ps; time" 146 | &sopb -C 5; &ps; time 147 | 148 | echo " " 149 | echo "&synch2 -W 2 -K 4; &lf -K 4 -e -C 32; &ps; &save; time" 150 | &synch2 -W 2 -K 4; &lf -K 4 -e -C 32; &ps; &save; time 151 | 152 | echo " " 153 | echo "&put; lutpack -S 3; &get -n -m; &ps; &save; time" 154 | &put; lutpack -S 3; &get -n -m; &ps; &save; time 155 | 156 | echo " " 157 | echo "Final stat: " 158 | echo " " 159 | &load; &ps -s; time 160 | 161 | echo " " 162 | echo "** ABC DELAY optimization done !!!" 163 | &put 164 | 165 | write_blif out.blif 166 | time 167 | 168 | echo "" 169 | echo "" 170 | echo "Skip Equivalence Checking ..." 171 | echo "Skip cec in.blif out.blif; time" 172 | echo "" 173 | echo "" 174 | 175 | time 176 | 177 | -------------------------------------------------------------------------------- /src/abc_scripts/LUT4/V2/small_area_lut4.scr: -------------------------------------------------------------------------------- 1 | time 2 | 3 | echo " " 4 | echo "** Starting ABC AREA LUT4 optimization and mapping !!!" 5 | 6 | write_blif in.blif 7 | 8 | &get -n -m 9 | 10 | echo "" 11 | echo "&st; &if -sz -C 5 -K 7 -S 44 -a" 12 | &st; &if -sz -C 5 -K 7 -S 44 -a ; &save -a; &ps; time 13 | &put 14 | 15 | read_blif in.blif 16 | 17 | &get -n -m 18 | 19 | &st; &if -K 4 -a; &ps 20 | 21 | &st; &if -K 4; &save; &sopb -C 8; &sopb -C 8; &sopb -C 8; &sopb -C 8; &sopb -C 8; &sopb -C 8; &sopb -C 8; &st; &if -K 4 -a; &mfs -W 2 -C 600 -D 25; &satlut -d -C 50; &save -a; &load; &ps 22 | 23 | &dch -s -C 300; &if -K 4 -a; &satlut; &ps 24 | 25 | &shrink; &if -K 4 -a; &mfs -W 2 -C 600 -D 25; &put; mfs2 -W 4 -M 1000 -C 7000; &get -n -m; &satlut; &ps 26 | 27 | &dch -s -C 300; &if -K 4 -a; &satlut; &save -a; &ps; time 28 | 29 | read_blif in.blif 30 | 31 | &get -n -m 32 | 33 | echo "" 34 | echo "&st; &lf -K 4 -e;" 35 | &st; &lf -K 4 -e; &save -a; &ps; time 36 | &put 37 | 38 | read_blif in.blif 39 | 40 | &get -n -m 41 | 42 | echo "" 43 | &st; &lf -K 4 -e; &save -a; &ps; time 44 | &put 45 | 46 | read_blif in.blif 47 | 48 | strash 49 | 50 | echo "" 51 | echo "&fraig" 52 | &get -n 53 | &sopb -C 3 54 | &fraig -x -L 200 55 | &put 56 | 57 | echo "" 58 | echo "dc2" 59 | dc2 60 | 61 | strash 62 | echo "" 63 | echo "dch -f" 64 | dch -f 65 | 66 | echo "" 67 | echo "if -K 4 -a" 68 | if -K 4 -a 69 | &get -n -m; &save -a; &ps ; time 70 | &put 71 | 72 | read_blif in.blif 73 | 74 | strash 75 | 76 | echo "" 77 | echo "&fraig" 78 | &get -n 79 | &fraig -x -L 200 80 | &put 81 | 82 | echo "" 83 | echo "dc2" 84 | dc2 85 | 86 | strash 87 | echo "" 88 | echo "dch -f" 89 | dch -f 90 | 91 | echo "" 92 | echo "if -K 4 -a" 93 | if -K 4 -a 94 | &get -n -m; &ps ; &save -a; 95 | 96 | &load; 97 | &put 98 | 99 | 100 | echo "" 101 | echo "mfs2 -W 4 -M 500 -C 7000" 102 | mfs2 -W 4 -M 500 -C 7000 103 | 104 | lutpack -S 1; 105 | 106 | &get -n -m; 107 | 108 | &save -a; 109 | 110 | echo "" 111 | echo "&synch2 -K 4 -C 500; &dch -c 600; &if -K 4 -a; &save -a; &put; mfs2 -W 4 -M 500 -C 7000; &get -n -m; &save -a; &load; &synch2 -K 4 -C 500; &if -K 4 -a; &put; mfs2 -W 4 -M 500 -C 7000; &get -n -m;" 112 | &synch2 -K 4 -C 500; &if -K 4 -a; &save -a; &ps; &load; &put; mfs2 -W 4 -M 500 -C 7000; &get -n -m; &save -a; &ps; &load; &synch2 -K 4 -C 500; &if -K 4 -a; &put; mfs2 -W 4 -M 500 -C 7000; &get -n -m; &save -a; &ps; &load; &ps; time 113 | 114 | 115 | echo "" 116 | echo "mfs2 -W 4 -M 500 -C 7000; &get -n -m; &save -a; &synch2 -K 4 -C 500; &lf -K 4 -e; &save -a; &load;" 117 | &put; mfs2 -W 4 -M 500 -C 7000; &get -n -m; &save -a; &ps; &synch2 -K 4 -C 500; &lf -K 4 -e; &save -a; &load; &ps; time 118 | 119 | echo "" 120 | echo "&st; &if -sz -C 5 -K 7 -S 44 -a" 121 | &st; &if -sz -C 5 -K 7 -S 44 -a ; &save -a; &load; &ps; time 122 | 123 | echo "" 124 | echo "mfs2 -W 4 -M 1000 -C 7000; " 125 | &put; mfs2 -W 4 -M 1000 -C 7000; &get -n -m; &save -a; &ps; time 126 | 127 | &put 128 | 129 | echo "" 130 | echo "lutpack -S 1" 131 | lutpack -S 1; 132 | time 133 | 134 | &get -n -m; 135 | 136 | &save -a; 137 | 138 | echo "" 139 | echo "&satlut -r; &save -a; &shrink; &dch -s -C 300; &if -sz -C 4 -K 7 -S 44 -a ; &put; mfs2 -W 4 -M 1000 -C 7000; &get -n -m; &satlut; &satlut -r ; &save -a; &load;" 140 | &satlut -r; &save -a; &shrink; &dch -s -C 300; &if -sz -C 4 -K 7 -S 44 -a ; &put; mfs2 -W 4 -M 1000 -C 7000; &get -n -m; &satlut; &satlut -r ; &save -a; &ps; &load; 141 | time 142 | 143 | echo "" 144 | echo "&satlut -r; &save -a; &shrink; &dch -s -C 300; &if -sz -C 4 -K 7 -S 44 -a ; &put; mfs2 -W 4 -M 1000 -C 7000; &get -n -m; &satlut; &satlut -r ; &save -a; &load;" 145 | &satlut -r; &save -a; &shrink; &dch -s -C 300; &if -sz -C 4 -K 7 -S 44 -a ; &put; mfs2 -W 4 -M 1000 -C 7000; &get -n -m; &satlut; &satlut -r ; &save -a; &ps; &load; 146 | time 147 | 148 | &load; &ps; 149 | 150 | &put 151 | 152 | echo " " 153 | echo "** ABC AREA Optimization and Mapping done !!!" 154 | &put 155 | -------------------------------------------------------------------------------- /src/abc_scripts/LUT6/V1/small_area_lut6.scr: -------------------------------------------------------------------------------- 1 | time 2 | 3 | echo " " 4 | echo "** Starting ABC AREA LUT6 optimization and mapping !!!" 5 | 6 | write_blif in.blif 7 | 8 | &get -n -m 9 | 10 | strash; muxes -g; &get -n -m; &st; &if -K 6 -a; &save -a; &ps 11 | &put 12 | 13 | read_blif in.blif 14 | 15 | &get -n -m 16 | 17 | echo "" 18 | echo "&st; &if -sz -C 3 -K 11 -S 66 -a" 19 | &st; &if -sz -C 3 -K 11 -S 66 -a ; &save -a; &ps; time 20 | &put 21 | 22 | read_blif in.blif 23 | 24 | &get -n -m 25 | 26 | &st; &if -K 6 -a; &ps 27 | 28 | &st; &if -K 6; &save -a; &sopb -C 8; &sopb -C 8; &sopb -C 8; &sopb -C 8; &sopb -C 8; &sopb -C 8; &sopb -C 8; &st; &if -K 6 -a; &mfs -W 2 -C 600 -D 25; &satlut -d -C 50; &save -a; &load; &ps 29 | 30 | &dch -s -C 300; &if -K 6 -a; &satlut; &ps 31 | 32 | &shrink; &if -K 6 -a; &mfs -W 2 -C 600 -D 25; &put; mfs2 -W 4 -M 1000 -C 7000; &get -n -m; &satlut; &ps 33 | 34 | &dch -s -C 300; &if -K 6 -a; &satlut; &save -a; &ps; time 35 | 36 | read_blif in.blif 37 | 38 | &get -n -m 39 | 40 | echo "" 41 | echo "&st; &lf -K 6 -e;" 42 | &st; &lf -K 6 -e; &save -a; &ps; time 43 | &put 44 | 45 | read_blif in.blif 46 | 47 | &get -n -m 48 | 49 | echo "" 50 | &st; &lf -K 6 -e; &save -a; &ps; time 51 | &put 52 | 53 | read_blif in.blif 54 | 55 | strash 56 | 57 | echo "" 58 | echo "&fraig" 59 | &get -n 60 | &sopb -C 3 61 | &fraig -x -L 200 62 | &put 63 | 64 | echo "" 65 | echo "dc2" 66 | dc2 67 | 68 | strash 69 | echo "" 70 | echo "dch -f" 71 | dch -f 72 | 73 | echo "" 74 | echo "if -K 6 -a" 75 | if -K 6 -a 76 | &get -n -m; &save -a; &ps ; time 77 | &put 78 | 79 | read_blif in.blif 80 | 81 | strash 82 | 83 | echo "" 84 | echo "&fraig" 85 | &get -n 86 | &fraig -x -L 200 87 | &put 88 | 89 | echo "" 90 | echo "dc2" 91 | dc2 92 | 93 | strash 94 | echo "" 95 | echo "dch -f" 96 | dch -f 97 | 98 | echo "" 99 | echo "if -K 6 -a" 100 | if -K 6 -a 101 | &get -n -m; &ps ; &save -a; 102 | 103 | &load; 104 | &put 105 | 106 | 107 | echo "" 108 | echo "mfs2 -W 4 -M 500 -C 7000" 109 | mfs2 -W 4 -M 500 -C 7000 110 | 111 | lutpack -S 1; 112 | 113 | &get -n -m; 114 | 115 | &save -a; 116 | 117 | echo "" 118 | echo "&synch2 -K 6 -C 500; &dch -c 600; &if -K 6 -a; &save -a; &put; mfs2 -W 4 -M 500 -C 7000; &get -n -m; &save -a; &load; &synch2 -K 6 -C 500; &if -K 6 -a; &put; mfs2 -W 4 -M 500 -C 7000; &get -n -m;" 119 | &synch2 -K 6 -C 500; &if -K 6 -a; &save -a; &ps; &load; &put; mfs2 -W 4 -M 500 -C 7000; &get -n -m; &save -a; &ps; &load; &synch2 -K 6 -C 500; &if -K 6 -a; &put; mfs2 -W 4 -M 500 -C 7000; &get -n -m; &save -a; &ps; &load; &ps; time 120 | 121 | 122 | echo "" 123 | echo "mfs2 -W 4 -M 500 -C 7000; &get -n -m; &save -a; &synch2 -K 6 -C 500; &lf -K 6 -e; &save -a; &load;" 124 | &put; mfs2 -W 4 -M 500 -C 7000; &get -n -m; &save -a; &ps; &synch2 -K 6 -C 500; &lf -K 6 -e; &save -a; &load; &ps; time 125 | 126 | echo "" 127 | echo "&st; &if -sz -C 3 -K 11 -S 66 -a" 128 | &st; &if -sz -C 3 -K 11 -S 66 -a ; &save -a; &load; &ps; time 129 | 130 | echo "" 131 | echo "mfs2 -W 4 -M 1000 -C 7000; " 132 | &put; mfs2 -W 4 -M 1000 -C 7000; &get -n -m; &save -a; &ps; time 133 | 134 | &put 135 | 136 | echo "" 137 | echo "lutpack -S 1" 138 | lutpack -S 1; 139 | time 140 | 141 | &get -n -m; 142 | 143 | &save -a; 144 | 145 | echo "" 146 | echo "&satlut -r; &save -a; &shrink; &dch -s -C 300; &if -sz -C 3 -K 11 -S 66 -a ; &put; mfs2 -W 4 -M 1000 -C 7000; &get -n -m; &satlut; &satlut -r ; &save -a; &load;" 147 | &satlut -r; &save -a; &shrink; &dch -s -C 300; &if -sz -C 3 -K 11 -S 66 -a ; &put; mfs2 -W 4 -M 1000 -C 7000; &get -n -m; &satlut; &satlut -r ; &save -a; &ps; &load; 148 | time 149 | 150 | echo "" 151 | echo "&satlut -r; &save -a; &shrink; &dch -s -C 300; &if -sz -C 3 -K 11 -S 66 -a ; &put; mfs2 -W 4 -M 1000 -C 7000; &get -n -m; &satlut; &satlut -r ; &save -a; &load;" 152 | &satlut -r; &save -a; &shrink; &dch -s -C 300; &if -sz -C 3 -K 11 -S 66 -a ; &put; mfs2 -W 4 -M 1000 -C 7000; &get -n -m; &satlut; &satlut -r ; &save -a; &ps; &load; 153 | time 154 | 155 | &load; &ps; 156 | 157 | &put 158 | 159 | echo " " 160 | echo "** ABC AREA Optimization and Mapping done !!!" 161 | &put 162 | --------------------------------------------------------------------------------