
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人
2.1.10 parameter、localparam和const有什么联系和差别?
相比于localparam,parameter可以在实例例化时从外部修改。parameter值的修改,可以在实例例化时通过#以order list或name list的方式来完成,也可以通过defparam赋值语句来实现。
localparam是局部参数,无法再次修改,自然也不能通过在实例例化时从外部修改。localparam在赋值时可以引用parameter。
parameter与localparam都是在elaboration时确定的,而const常量则是在仿真时确定的。与localparam类似的地方在于,const一旦定义和初始化也就无法再修改它的值。
关键词:
parameter,localparam,const
避坑指南:
parameter的值除了在设计代码中给定,也可以在编译时通过添加与参数修改有关的选项来给定(也可以覆盖设计代码中的给定parameter值),但它们的特征都会在elaboration阶段确定下来,与parameter有关的设计结构、数据位宽、逻辑行为等也因此都会在编译阶段确定下来。
const常量虽然在代码中不能再次对其进行赋值,但仍然可以通过在仿真时的force处理来修改它的值,继而影响与其相关的逻辑行为。需要注意的是,不能通过force来修改parameter和localparam的数值。
参考代码:sv_para_localpara_const_diff.sv


阅读手记: