生成模型和验证模型
HDL Coder™使您能够在生成的模型中查看HDL优化和块设置的效果。
生成的模型
在生成代码之前,HDL Coder会创建一个称为生成的模型.生成的模型是一个中间模型,它捕获生成代码在区域和代码生成期间的时间优化方面的周期精确和位真行为。它显示了您的Simulink之间的延迟和数值差异金宝app®DUT和生成的HDL代码。代码生成器插入的延迟在生成的模型中以各种颜色突出显示。参见下表,了解代码生成中的不同延迟、相应的高亮颜色,以及如何在生成的模型中命名延迟。
延迟 | 突出显示颜色 | 命名约定 |
---|---|---|
|
青色 | 该块以青色突出显示。延迟该块内的块使用默认名称 |
绿色 | 受约束的输出流水线:rd_n |
|
橙色 |
|
通过时间和区域优化,生成的模型与原始模型有了本质上的不同。例如,如果您请求优化,您可以在块旁边看到额外的整数延迟,并在必要的地方看到额外的平衡延迟,以保持算法的准确性。如果您请求资源共享或流优化(其中同一操作符跨多个操作进行时间复用),则会在模型中看到额外的费率。
生成的模型用于RTL测试台的生成。输入刺激和输出响应是从生成的模型而不是原始模型中捕获的,因为生成的模型反映了优化所需的算法定时更改。如果禁用模型生成,则不能在HDL Coder中生成测试工作台。
在代码生成之后,生成的模型被保存在目标文件夹中。缺省情况下,生成的模型前缀为gm_
.例如,如果您的模型名称是myModel
,您生成的模型名称为gm_
myModel
.
自定义生成的模型
要自定义生成的模型名称的前缀,请使用GeneratedModelNamePrefix
财产与makehdl
或hdlset_param
.看到生成的模型名称的前缀.
您还可以为生成的模型的命名和布局指定各种选项。看到模型生成的命名和布局选项.
验证模型
因为生成的模型通常与原始模型有本质上的不同,编码器还可以创建一个验证模型将原始模型与生成的模型进行比较。验证模型在原始模型的输出处插入延迟,以补偿延迟差异,并比较两个模型的输出。在模拟验证模型时,输出数据中的数值差异会触发断言。
使用验证模型,您可以验证优化的DUT的输出与原始DUT产生的结果是位真的。
验证模型包含:
生成的模型。
插入补偿延迟的原始模型。
原始输入,路由到原始模型和生成的模型。
比较和查看原始模型和生成模型的输出的范围。
延迟的差异
一些块架构和优化会引入延迟。例如,对于互惠块,您可以指定实现Newton-Raphson方法的HDL块体系结构。Newton-Raphson方法是迭代的,因此使用它的块体系结构是多循环的,并以块速率引入延迟。
类似地,资源共享区域优化时间复用数据通过共享硬件资源,这引入了本地多速率和以上采样速率的延迟。
数字的差异
HDL块体系结构可以引入数值差异。例如:
HDL块属性如InputPipeline或某些HDL架构或优化,如将延迟移动到块的输入的分布式流水线。
牛顿-拉弗森方法是一种近似。如果选择Newton-Raphson块实现,生成的模型将显示数字的变化。
信号处理块(如过滤器)的HDL实现可以改变数字。
另请参阅在速度优化后定位数值差异.
生成验证模型
在“配置参数”对话框中,单击HDL代码生成>全局设置>模型生成窗格中,选择验证模型.
在HDL工作流顾问中,在HDL代码生成>生成RTL代码和测试平台窗格中,使生成验证模型.
使用
GenerateValidationModel
财产与makehdl
或hdlset_param
.
自定义验证模型
要自定义生成的验证名称的后缀,请使用ValidationModelNameSuffix
财产与makehdl
或hdlset_param
.看到用于验证模型名称的后缀.
限制
要生成验证模型,必须为DUT子系统生成HDL代码。不支持为整个模型而不是DUT子系统生成代码的模型金宝app生成。
确保DUT子系统没有未连接的输出端口。看到终止未连接的块输出和注释块的使用.