在 Quartus Prime 的 SystemVerilog 中使用 $ceil 定义参数
Using $ceil to define a parameter in SystemVerilog in Quartus Prime
正在尝试这样做
parameter integer PRECHARGE_CLOCKS = $ceil(PRECHARGE_NS / CLOCK_PERIOD_NS);
然后在比较中使用该值
if(InitPrechargeCounter < PRECHARGE_CLOCKS - 1)
但是出现这个错误
Error (10174): Verilog HDL Unsupported Feature error at Ram.sv(23): system function "$ceil" is not supported for synthesis
有没有办法解决这个问题,以便我在编译时获得计算值?
使用一些不同的语言结构而不是 parameter
?
试试这个:
参数整数PRECHARGE_CLOCKS = ((PRECHARGE_NS + CLOCK_PERIOD_NS -1) / CLOCK_PERIOD_NS);
它应该像 $ceil 那样四舍五入。
我最终使用以下宏解决了这个问题,这创建了 2 个额外的参数以进行四舍五入,但这是迄今为止我找到的最佳解决方案。
这不限于整数参数并且适用于实数。
我已经用 Quartus 和 Modelsim
测试过了
`define Ceil(ParamName, Expression) \
parameter ParamName``_F = Expression;\
parameter integer ParamName``_R = ParamName``_F;\
parameter integer ParamName = (ParamName``_R == ParamName``_F || ParamName``_R > ParamName``_F) ? ParamName``_R : (ParamName``_R + 1);
然后代替
parameter integer AUTOREFRESH_CLOCKS = $ceil(UTOREFRESH_NS/CLOCK_PERIOD_NS);
您将调用宏
`Ceil(AUTOREFRESH_CLOCKS, UTOREFRESH_NS/CLOCK_PERIOD_NS)
而且这不能在 Quartus 中综合并在 Modelsim 中工作
正在尝试这样做
parameter integer PRECHARGE_CLOCKS = $ceil(PRECHARGE_NS / CLOCK_PERIOD_NS);
然后在比较中使用该值
if(InitPrechargeCounter < PRECHARGE_CLOCKS - 1)
但是出现这个错误
Error (10174): Verilog HDL Unsupported Feature error at Ram.sv(23): system function "$ceil" is not supported for synthesis
有没有办法解决这个问题,以便我在编译时获得计算值?
使用一些不同的语言结构而不是 parameter
?
试试这个:
参数整数PRECHARGE_CLOCKS = ((PRECHARGE_NS + CLOCK_PERIOD_NS -1) / CLOCK_PERIOD_NS);
它应该像 $ceil 那样四舍五入。
我最终使用以下宏解决了这个问题,这创建了 2 个额外的参数以进行四舍五入,但这是迄今为止我找到的最佳解决方案。 这不限于整数参数并且适用于实数。 我已经用 Quartus 和 Modelsim
测试过了`define Ceil(ParamName, Expression) \
parameter ParamName``_F = Expression;\
parameter integer ParamName``_R = ParamName``_F;\
parameter integer ParamName = (ParamName``_R == ParamName``_F || ParamName``_R > ParamName``_F) ? ParamName``_R : (ParamName``_R + 1);
然后代替
parameter integer AUTOREFRESH_CLOCKS = $ceil(UTOREFRESH_NS/CLOCK_PERIOD_NS);
您将调用宏
`Ceil(AUTOREFRESH_CLOCKS, UTOREFRESH_NS/CLOCK_PERIOD_NS)
而且这不能在 Quartus 中综合并在 Modelsim 中工作