VHDL 属性语句之attribute 和keep

attribute属性:

定义格式:

attribute 属性名 :数据类型;
attribute 属性名 of 对象名 : 对象类型 is 值;

引脚锁定的设置也能够直接写在程序文件中。这就是liyo利用所谓的引脚属性定义来完成引脚锁定。引脚属性定义的格式随各个厂家的综合器和适配器的不同而不同。下面以ALTRA中一种为例:

architecture one of mult4 is
    attribute chip_pin : string;
    attribute chip_pin of A : signal is "B6,A6,B7,A7";
    attribute chip_pin of B :  signal is "K21,H22,J21,A5";
    attribute chip_pin of R :  signal is "E3,G3,D8,B2,A3,A4,C6,H21";
begin

这种对于引脚属性定义应该注意两点:第一,必须对应确定的目标器件;第二,只能在顶层设计文件中定义。

虽然任何单纯的硬件语言都可以脱离具体的硬件来描述系统,但是就EDA工程而言,与HDL代码设计有很大的不同之处在于,一个性能优良,工作稳定,性价比高的数字系统不可能仅仅凭借计算机描述语言的描述来实现,它必须借助于与硬件实现相关的各种控制信息和控制指令来完成最终的设计。

keep属性:

有时设计者希望在buze不增加与设计无关的xinh信号连线的条件下,在仿真中也能详细了解定义在模块内部的某个数据通道上的信号变化情况。但是往往由于此信号是模块内部临时性信号或者数据通道,在经逻辑综合和优化后被精简并除名。为了解决这个问题,可以使用keep属性,通过对信号定义keep属性,告诉综合器把此信号保护起来,不要优化和删除,从而使信号能够完整的出现在仿真信号中

例如:

architecture fd of adder is 
    signal net1,net2, net3 : std_logic;
    attribute keep : boolean;
    attribute keep of net1 : signal is true;
begin

attribute 属性在function中的应用

attribute builtin_subprogram : string;
function to_01(arg:unresolved_float,xmap:std_logic:='0')return unresolved_float;
attribute builtin_subprogram of to_01 [unresolved_float,std_logic return unresolved_float]:function is“floatlib_01_ff”;

 

你可能感兴趣的:(VHDL 属性语句之attribute 和keep)