mirror of
https://github.com/YosysHQ/yosys
synced 2025-08-17 16:52:16 +00:00
Standardize convention, add back test, update README
This commit is contained in:
parent
9e9d4359d4
commit
ed2c65314b
13 changed files with 17 additions and 9 deletions
156
tests/various/abc9.ys.DISABLED
Normal file
156
tests/various/abc9.ys.DISABLED
Normal file
|
@ -0,0 +1,156 @@
|
|||
read_verilog abc9.v
|
||||
design -save read
|
||||
hierarchy -top abc9_test027
|
||||
proc
|
||||
design -save gold
|
||||
|
||||
abc9 -lut 4
|
||||
check
|
||||
design -stash gate
|
||||
|
||||
design -import gold -as gold
|
||||
design -import gate -as gate
|
||||
|
||||
miter -equiv -flatten -make_assert -make_outputs gold gate miter
|
||||
sat -verify -prove-asserts -show-ports miter
|
||||
|
||||
|
||||
design -load read
|
||||
hierarchy -top abc9_test028
|
||||
proc
|
||||
|
||||
abc9 -lut 4
|
||||
select -assert-count 1 t:$lut r:LUT=2'b01 r:WIDTH=1 %i %i
|
||||
select -assert-count 1 t:unknown
|
||||
select -assert-none t:$lut t:unknown %% t: %D
|
||||
|
||||
|
||||
design -load read
|
||||
hierarchy -top abc9_test032
|
||||
proc
|
||||
clk2fflogic
|
||||
design -save gold
|
||||
|
||||
abc9 -lut 4
|
||||
check
|
||||
design -stash gate
|
||||
|
||||
design -import gold -as gold
|
||||
design -import gate -as gate
|
||||
|
||||
miter -equiv -flatten -make_assert -make_outputs gold gate miter
|
||||
sat -seq 10 -verify -prove-asserts -show-ports miter
|
||||
|
||||
|
||||
design -reset
|
||||
read_verilog -icells <<EOT
|
||||
module abc9_test036(input clk, d, output q);
|
||||
(* keep, init=1'b0 *) wire w;
|
||||
$_DFF_P_ ff(.C(clk), .D(d), .Q(w));
|
||||
assign q = w;
|
||||
endmodule
|
||||
EOT
|
||||
equiv_opt -assert abc9 -lut 4 -dff
|
||||
design -load postopt
|
||||
cd abc9_test036
|
||||
select -assert-count 1 t:$_DFF_P_
|
||||
select -assert-none t:* t:$_DFF_P_ %d
|
||||
|
||||
|
||||
design -reset
|
||||
read_verilog -icells -specify <<EOT
|
||||
(* abc9_lut=1, blackbox *)
|
||||
module LUT2(input [1:0] i, output o);
|
||||
parameter [3:0] mask = 0;
|
||||
assign o = i[0] ? (i[1] ? mask[3] : mask[2])
|
||||
: (i[1] ? mask[1] : mask[0]);
|
||||
specify
|
||||
(i *> o) = 1;
|
||||
endspecify
|
||||
endmodule
|
||||
|
||||
module abc9_test037(input [1:0] i, output o);
|
||||
LUT2 #(.mask(4'b0)) lut (.i(i), .o(o));
|
||||
endmodule
|
||||
EOT
|
||||
abc9
|
||||
|
||||
|
||||
design -reset
|
||||
read_verilog -icells <<EOT
|
||||
module abc9_test038(input clk, output w, x, y, z);
|
||||
(* init=1'b1 *) wire w;
|
||||
$_DFF_N_ ff1(.C(clk), .D(1'b1), .Q(w));
|
||||
(* init=1'bx *) wire x;
|
||||
$_DFF_N_ ff2(.C(clk), .D(1'b0), .Q(x));
|
||||
(* init=1'b0 *) wire y;
|
||||
$_DFF_N_ ff3(.C(clk), .D(1'b0), .Q(y));
|
||||
(* init=1'b0 *) wire z;
|
||||
$_DFF_N_ ff4(.C(clk), .D(1'b1), .Q(z));
|
||||
endmodule
|
||||
EOT
|
||||
simplemap
|
||||
equiv_opt -assert abc9 -lut 4 -dff
|
||||
design -load postopt
|
||||
cd abc9_test038
|
||||
select -assert-count 3 t:$_DFF_N_
|
||||
select -assert-none c:ff1 c:ff2 c:ff4 %% c:* %D
|
||||
clean
|
||||
select -assert-count 2 a:init
|
||||
select -assert-count 1 w:w a:init %i
|
||||
select -assert-count 1 c:ff4 %co c:ff4 %d %a a:init %i
|
||||
|
||||
|
||||
# Check that non-dangling ABC9 black-boxes are preserved
|
||||
design -reset
|
||||
read_verilog -specify <<EOT
|
||||
(* abc9_box, blackbox *)
|
||||
module mux_with_param(input I0, I1, S, output O);
|
||||
parameter P = 0;
|
||||
specify
|
||||
(I0 => O) = P;
|
||||
(I1 => O) = P;
|
||||
(S => O) = P;
|
||||
endspecify
|
||||
endmodule
|
||||
|
||||
module abc9_test039(output O);
|
||||
mux_with_param #(.P(1)) m (
|
||||
.I0(1'b1),
|
||||
.I1(1'b1),
|
||||
.O(O),
|
||||
.S(1'b0)
|
||||
);
|
||||
endmodule
|
||||
EOT
|
||||
abc9 -lut 4
|
||||
cd abc9_test039
|
||||
select -assert-count 1 t:mux_with_param
|
||||
|
||||
|
||||
# Check that dangling ABC9 black-boxes are swept away
|
||||
design -reset
|
||||
read_verilog -specify <<EOT
|
||||
(* abc9_box, blackbox *)
|
||||
module mux_with_param(input I0, I1, S, output O);
|
||||
parameter P = 0;
|
||||
specify
|
||||
(I0 => O) = P;
|
||||
(I1 => O) = P;
|
||||
(S => O) = P;
|
||||
endspecify
|
||||
endmodule
|
||||
|
||||
module abc9_test040(output O);
|
||||
wire w;
|
||||
mux_with_param #(.P(1)) m (
|
||||
.I0(1'b1),
|
||||
.I1(1'b1),
|
||||
.O(w),
|
||||
.S(1'b0)
|
||||
);
|
||||
endmodule
|
||||
EOT
|
||||
abc9 -lut 4
|
||||
cd abc9_test040
|
||||
select -assert-count 0 t:mux_with_param
|
Loading…
Add table
Add a link
Reference in a new issue