如果我在实例化模块时设置了类型实参数,那么yosys似乎有一个错误。我正在使用"官方" Win7x64上的0.7二进制版本。例如,我有以下模块:
module freq_divider (clk,
out_clk_reg);
parameter real in_freq = 2.0;
parameter real out_freq = 1.0;
input clk;
output reg out_clk_reg;
localparam integer div_period
= (in_freq / out_freq) / 2.0;
reg [$clog2(div_period+1)-1 : 0] div_reg = 0;
always @(posedge clk) begin
div_reg <= div_reg + 1;
if (div_reg == div_period) begin
out_clk_reg <= ~out_clk_reg;
div_reg <= 0;
end
end
endmodule
如果我用两个参数的整数值实例化它,那么这个模块工作正常。但是,如果我用实际值实例化它,我会收到有关字符串值的奇怪警告。例如,如果尝试为in_freq传递12000000.0:
...
parameter sys_clk_freq = 12000000.0;
parameter baud_freq = 9_600;
...
freq_divider #(sys_clk_freq, baud_freq) baud_clk_div(sys_clk, baud_clk);
...
我收到警告:
警告:用uart_top.v处的字符串替换浮点参数baud_clk_div。$ 1 = 12000000.000000:45。
然后该模块似乎正在解释&#34;字符串&#34;作为模块内部的巨大实际价值:
警告:在freq_divider.v上将实际值1.277202e + 035转换为二进制0:
这是真正的错误还是我犯了一些新手的错误。我只做了两周左右的verilog编码。
Rick Moll