mirror of
https://github.com/YosysHQ/yosys
synced 2025-04-23 00:55:32 +00:00
abc9: fix SCC issues (#2694)
* xilinx: add SCC test for DSP48E1 * xilinx: Gate DSP48E1 being a whitebox behind ALLOW_WHITEBOX_DSP48E1 Have a test that checks it works through ABC9 when enabled * abc9 to break SCCs using $__ABC9_SCC_BREAKER module * Add test * abc9_ops: remove refs to (* abc9_keep *) on wires * abc9_ops: do not bypass cells in an SCC * Add myself to CODEOWNERS for abc9* * Fix compile * abc9_ops: run -prep_hier before scc * Fix tests * Remove bug reference pending fix * abc9: fix for -prep_hier -dff * xaiger: restore PI handling * abc9_ops: -prep_xaiger sigmap * abc9_ops: -mark_scc -> -break_scc * abc9: eliminate hard-coded abc9.box from tests Also tidy up * Address review
This commit is contained in:
parent
687f381b69
commit
55dc5a4e4f
9 changed files with 94 additions and 45 deletions
|
@ -1,3 +0,0 @@
|
|||
MUXF8 1 0 3 1
|
||||
#I0 I1 S
|
||||
0 0 0 # O
|
|
@ -213,7 +213,7 @@ module arbiter (clk, rst, request, acknowledge, grant, grant_valid, grant_encode
|
|||
input rst;
|
||||
endmodule
|
||||
|
||||
(* abc9_box_id=1, blackbox *)
|
||||
(* abc9_box, blackbox *)
|
||||
module MUXF8(input I0, I1, S, output O);
|
||||
specify
|
||||
(I0 => O) = 0;
|
||||
|
@ -300,15 +300,29 @@ endmodule
|
|||
module abc9_test036(input A, B, S, output [1:0] O);
|
||||
(* keep *)
|
||||
MUXF8 m (
|
||||
.I0(I0),
|
||||
.I1(I1),
|
||||
.I0(A),
|
||||
.I1(B),
|
||||
.O(O[0]),
|
||||
.S(S)
|
||||
);
|
||||
MUXF8 m2 (
|
||||
.I0(I0),
|
||||
.I1(I1),
|
||||
.I0(A),
|
||||
.I1(B),
|
||||
.O(O[1]),
|
||||
.S(S)
|
||||
);
|
||||
endmodule
|
||||
|
||||
(* abc9_box, whitebox *)
|
||||
module MUXF7(input I0, I1, S, output O);
|
||||
assign O = S ? I1 : I0;
|
||||
specify
|
||||
(I0 => O) = 0;
|
||||
(I1 => O) = 0;
|
||||
(S => O) = 0;
|
||||
endspecify
|
||||
endmodule
|
||||
|
||||
module abc9_test037(output o);
|
||||
MUXF7 m(.I0(1'b1), .I1(1'b0), .S(o), .O(o));
|
||||
endmodule
|
||||
|
|
|
@ -37,14 +37,18 @@ done
|
|||
|
||||
cp ../simple/*.v .
|
||||
cp ../simple/*.sv .
|
||||
rm specify.v # bug 2675
|
||||
DOLLAR='?'
|
||||
exec ${MAKE:-make} -f ../tools/autotest.mk $seed *.v *.sv EXTRA_FLAGS="-n 300 -p '\
|
||||
exec ${MAKE:-make} -f ../tools/autotest.mk $seed *.v *.sv EXTRA_FLAGS="-f \"verilog -noblackbox -specify\" -n 300 -p '\
|
||||
read_verilog -icells -lib +/abc9_model.v; \
|
||||
hierarchy; \
|
||||
synth -run coarse; \
|
||||
opt -full; \
|
||||
techmap; \
|
||||
abc9 -lut 4 -box ../abc9.box; \
|
||||
abc9 -lut 4; \
|
||||
clean; \
|
||||
check -assert; \
|
||||
check -assert * abc9_test037 %d; \
|
||||
select -assert-none t:${DOLLAR}_NOT_ t:${DOLLAR}_AND_ %%; \
|
||||
setattr -mod -unset blackbox'"
|
||||
setattr -mod -unset blackbox -unset whitebox'"
|
||||
|
||||
# NOTE: Skip 'check -assert' on abc9_test037 because it intentionally has a combinatorial loop
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue