Verilog Yosys中的原语

Verilog Yosys中的原语,verilog,yosys,Verilog,Yosys,我正在使用YOSYS将Verilog转换为BLIF。输入是一个电路(L_0_0),它只包含not、and、or原语和一些行为锁存代码 我使用的命令是: > read_verilog <file> > proc; opt; memory; opt; techmap; opt; > write_blif <file> 下面是带有同步重置的新输出。Verilog输出端口都已连接,并且似乎它们也在BLIF中连接 # Generated by Yosys 0.

我正在使用YOSYS将Verilog转换为BLIF。输入是一个电路(L_0_0),它只包含not、and、or原语和一些行为锁存代码

我使用的命令是:

> read_verilog <file>
> proc; opt; memory; opt; techmap; opt;
> write_blif <file>
下面是带有同步重置的新输出。Verilog输出端口都已连接,并且似乎它们也在BLIF中连接

# Generated by Yosys 0.7 (git sha1 61f6811, i686-w64-mingw32.static-gcc 4.9.3 -Os)

.model L_0_0
.inputs clk rst ins
.outputs outs
.names $false
.names $true
1
.names $undef
.names r_out_0_0 $false rst $0\outs[0:0]
1-0 1
-11 1
.names w_out_1_0 $false rst $0\r_out_1_0[0:0]
1-0 1
-11 1
.names w_out_0_0 $false rst $0\r_out_0_0[0:0]
1-0 1
-11 1
.latch $0\outs[0:0] outs re clk 2
.latch $0\r_out_0_0[0:0] r_out_0_0 re clk 2
.latch $0\r_out_1_0[0:0] r_out_1_0 re clk 2
.names r_out_0_0 r_out_1_0 w_out_0_0
11 1
.names ins r_out_1_0 w_out_1_0
1- 1
-1 1
.names r_out_0_0 w_in_0_0
1 1
.names r_out_1_0 w_in_0_1
1 1
.names ins w_in_1_0
1 1
.names r_out_1_0 w_in_1_1
1 1
.end

BLIF文件格式不支持异步重置的存储元素。不幸的是,您没有发布用作输入的Verilog代码,但是从您发布的内容可以明显看出,您的Verilog确实包含这样的存储元素。(
$\u DFF\u PN0
是一种Yosys内部单元类型,用于表示负极性异步复位为零的正边缘触发器。Yosys只按原样输出该单元,因为BLIF中没有等效的结构。)

如果希望使用BLIF输出,那么必须避免在设计中使用异步重置。Yosys在这里无能为力,因为这是对BLIF文件格式的限制


如果您不想更改HDL代码,但可以将异步重置转换为同步重置,那么您只需在运行
proc
后运行
techmap-map+/adff2dff.v
,谢谢。你是对的。我的重置是异步的。当我将其更改为sync或使用techmap命令时,问题就解决了。我的新问题是,当我将它输入到T-VPACK时,它会说有未连接的端口,并生成错误。即使是opt也无法解决这一问题。你能帮我吗?谢谢你advance@Laleh我对t-VPACK一无所知。您的设计中是否有未连接的管脚?如果是这样,Yosys不会丢弃它们,因为这会改变模块接口。未连接的输入不应该造成伤害。如果问题是未连接的输入,我会认为这是T-VPACK中的一个错误。如果问题是未连接的输出,我建议您在HDL代码中使用常量值驱动它们。谢谢您的回复。报告的未连接端口是输出的,但它实际上不是未连接的。我已经更新了这个问题,包括我的Verilog文件和Yosys的新输出。@Laleh我认为这个问题最好在VTR人员那里解决,因为我对他们的工具一无所知。T-VPACK是否接受BLIF逻辑电路,或者是否需要已映射到目标体系结构原语的网络列表?我不知道。。我会在不知道VTR的情况下,尝试在创建一张罚单。这是我的问题。现在,我可以使用ODIN将.v转换为.blif并将其提供给VPR。谢谢
# Generated by Yosys 0.7 (git sha1 61f6811, i686-w64-mingw32.static-gcc 4.9.3 -Os)

.model L_0_0
.inputs clk rst ins
.outputs outs
.names $false
.names $true
1
.names $undef
.names r_out_0_0 $false rst $0\outs[0:0]
1-0 1
-11 1
.names w_out_1_0 $false rst $0\r_out_1_0[0:0]
1-0 1
-11 1
.names w_out_0_0 $false rst $0\r_out_0_0[0:0]
1-0 1
-11 1
.latch $0\outs[0:0] outs re clk 2
.latch $0\r_out_0_0[0:0] r_out_0_0 re clk 2
.latch $0\r_out_1_0[0:0] r_out_1_0 re clk 2
.names r_out_0_0 r_out_1_0 w_out_0_0
11 1
.names ins r_out_1_0 w_out_1_0
1- 1
-1 1
.names r_out_0_0 w_in_0_0
1 1
.names r_out_1_0 w_in_0_1
1 1
.names ins w_in_1_0
1 1
.names r_out_1_0 w_in_1_1
1 1
.end