我一直在測試yosys的一些用例。 版本:Yosys 0.7 + 200(GIT SHA1 155a80d,GCC-6.3 6.3.0 -fPIC -Os)Yosys邏輯循環虛假檢測
我寫了一個簡單的塊,其格雷碼轉換爲二進制:
module gray2bin (gray, bin);
parameter WDT = 3;
input [WDT-1:0] gray;
output [WDT-1:0] bin;
assign bin = {gray[WDT-1], bin[WDT-1:1]^gray[WDT-2:0]};
endmodule
這是一個可接受的和verilog中的有效代碼,並且沒有循環。 它通過編譯和綜合,沒有任何其他工具的警告。 但是,當我在yosys運行下命令:
read_verilog gray2bin.v
scc
我得到一個邏輯循環中發現:
Found an SCC: $xor$gray2bin.v:11$1
Found 1 SCCs in module gray2bin.
Found 1 SCCs.
下一個代碼,相當於,通過檢查:
module gray2bin2 (
gray,
bin
);
parameter WDT = 3;
input [WDT-1:0] gray;
output [WDT-1:0] bin;
assign bin[WDT-1] = gray[WDT-1];
genvar i;
generate
for (i = WDT-2; i>=0; i=i-1) begin : gen_serial_xor
assign bin[i] = bin[i+1]^gray[i];
end
endgenerate
endmodule
我是否缺少某種標誌或合成選項?
感謝您的快速響應! 雖然我不確定它有幫助 - 我的主要興趣是Yosys的FV功能。 SMT2後端給出「錯誤:發現模塊中的邏輯循環」消息。是否有可能向SMT後端交付網表? – EEliaz
我檢查過它 - 運行'synth; 'write_smt2'前的splitnets -ports,SMT工具不提供ERROR消息。 謝謝! – EEliaz
一個問題得到修復,另一個問題彈出:)運行'synth; splitnets -ports' write_smt2'不會給出ERROR消息。 但是,在添加這些行之前,BMC發現了一個計數器示例,但現在它沒有(並且非常快速地結束)。所以我猜我不能在'write_smt2'之前使用「合成器」,對吧? – EEliaz