Formality:原语(primitive)的概念

Formality:原语(primitive)的概念

相关阅读

Formalityhttps://blog.ZEEKLOG.net/weixin_45791458/category_12841971.html?spm=1001.2014.3001.5482


        原语(primitive)一般指的是语言内置的基本构件,它们代表了基本的逻辑门和构件,通常用于建模电路的基本功能,例如Verilog中的门级建模会使用and、or等关键词表示单元门。Formality也存在原语的概念,这一般出现在对门级网表进行建模时,本文将对此进行详细解释。

        假设以例1所示的RTL代码作为参考设计(可以看出添加了// synopsys sync_set_reset综合指令让Design Compiler将其实现为带同步复位端的D触发器),例2所示的综合后网表作为实现设计,其中data_out_reg原语是一个带同步复位端的D触发器(FDS2)。

// 例1 module ref( input clk, input reset, input data_in, output reg data_out ); // synopsys sync_set_reset "reset" always @(posedge clk) begin if (reset) begin data_out <= 1'b0; end else begin data_out <= data_in; end end endmodule
// 例2 ///////////////////////////////////////////////////////////// // Created by: Synopsys DC Expert(TM) in wire load mode // Version : O-2018.06-SP1 // Date : Fri Jun 27 15:52:09 2025 ///////////////////////////////////////////////////////////// module ref ( clk, reset, data_in, data_out ); input clk, reset, data_in; output data_out; wire n1; FDS2 data_out_reg ( .CR(data_in), .D(n1), .CP(clk), .Q(data_out) ); IV U4 ( .A(reset), .Z(n1) ); endmodule 

        在Formality中完成了参考设计、实现设计和库文件的读取后,参考设计的结构如图1所示(注意勾选Primitive),原理图如图2所示。

图1 参考设计的结构

图2 参考设计的原理图

        可以看出,就像Design Compiler读取RTL代码后会将其转化为GTECH网表那样(其实GTECH也可以被认为是一种primitive),Formality读取RTL代码后直接将其用内部原语实现了,其中date_out_reg原语是一个有同步使能SL,同步数据输入SD和时钟CLK的D触发器。

        实现设计的结构如图3所示(注意勾选Primitive和Tech Cells),原理图如图4所示。

图3 实现设计的结构

 

图4 实现设计的原理图

        从图3所示的结构,我们可以看到来自标准单元库的date_out_reg单元(注意,这与参考设计中的date_out_reg原语不是一个概念)和U4单元,但是可以看出它们是可以再分的,U4单元由cell0原语组成,date_out_reg单元则由包括*dff.00**在内的四个原语组成。

        date_out_reg单元的内部结构如图5所示。

图5 date_out_reg单元的内部结构

        *dff.00**原语就像参考设计中的date_out_reg原语那样是一个有同步使能SL,同步数据输入SD和时钟CLK的D触发器,但此时搭配cell2原语实现了一个带同步复位端的D触发器。

        总结一下就是,为了让等价性检查更标准化,Formality将直接用内部原语实现RTL代码,而用功能等效的方式用内部原语实现门级网表中的各个标准单元,并最终对内部原语进行比较。在工艺库列表中,可以查看各个标准单元是如何映射到内部原语的,如图6所示。

图6 查看标准单元库中每个标准单元原语映射方式

        这也解释了为什么在进行比较点验证时,会将参考设计中的date_out_reg原语和实现设计中的date_out_reg/*dff.00**原语进行比较了,此时它们才应该是比较是否等价的对象,如图7所示。

图7 比较点的验证

Read more

丝滑灵活,春节你只管“放手去嚯嚯”!一台“黑豹”机器人帮你清洁就够了

丝滑灵活,春节你只管“放手去嚯嚯”!一台“黑豹”机器人帮你清洁就够了

2025年下半年始,人形机器人行业正在经历一场从“概念追捧”到“交付验证”的深刻认知升级。 没过多久,就有平台爆料多家机器人被工厂赶了出来。据说Demo阶段都非常亮眼,也成功说服了客户在产线上测试,但实际的表现却很拉胯。对于流水化的工厂来说,需要机器人在几十秒内完成动作,实际操作往往需要几分钟,完全无法胜任产线上的工作。 尴尬之余,这个状况也是共像,是整个行业真实“进厂打工”的现状。 只能做做demo,没办法满足客户的期望,技术上未有实质性突破,场景上必然表现的很差,这也可能导致损失很多客户。不少团队感觉到,具身正在开始收敛。这也表示,新的一年行业对各家公司要求都会很高,找准商业化落地场景,将是主线。 开年不到两个月,行业已经产生超过三十起的融资事件。但量产和落地的“达摩克利斯之剑”仍悬在头上:“有多少机器人实际在真实场景下工作?”“能给公司降本增效么?”“是否稳定运转?” 整个具身领域,正在逐渐褪去华丽的外衣,回归技术和产业的本质。 原文链接:丝滑灵活,春节你只管“放手去嚯嚯”!一台“黑豹”机器人帮你清洁就够了 (一)

开箱即用的AI绘画工具:Z-Image-Turbo UI界面实测

开箱即用的AI绘画工具:Z-Image-Turbo UI界面实测 你是否试过下载一堆依赖、配置环境变量、反复调试端口,只为让一个AI绘图工具跑起来?又或者,刚点开网页就弹出“登录”“注册”“开通会员”,结果生成一张图要等三分钟,还带水印?今天要聊的这个工具,没有这些烦恼——它不联网、不传图、不注册,双击启动后,浏览器里输入一个地址,三秒进界面,五秒写提示词,十秒出高清图。它就是Z-Image-Turbo_UI界面镜像,一个真正意义上“开箱即用”的本地AI绘画方案。 这不是概念演示,也不是简化版Demo,而是完整可用的生产级UI:支持中文提示词理解、实时预览、多尺寸输出、历史图库管理,所有操作都在浏览器里完成,模型全程运行在你自己的设备上。接下来,我会带你从零开始,不跳步骤、不绕弯子,真实还原一次完整的使用过程——包括怎么启动、怎么调参、怎么保存、怎么清理,甚至怎么避开新手最容易踩的三个小坑。 1. 启动服务:

一键部署Z-Image-Turbo:云端AI绘画不求人

一键部署Z-Image-Turbo:云端AI绘画不求人 你是不是也遇到过这样的场景:脑子里有个绝妙的画面,想把它画出来,但要么不会画画,要么打开专业绘图软件折腾半天,最后出来的效果还不如想象力的十分之一? 或者,作为内容创作者、电商运营,每天需要大量配图、海报,找图库要花钱,自己设计又太费时间,效率低得让人抓狂。 今天,我要给你介绍一个“神器”——Z-Image-Turbo 极速云端创作室。它不是一个复杂的软件,而是一个打包好的云端AI绘画应用。你不需要懂代码,不需要配置环境,甚至不需要高性能电脑,只需要点几下鼠标,就能拥有一个属于你自己的、能秒级生成高清大图的AI画室。 这听起来是不是有点不可思议?别急,跟着我,10分钟你就能亲手把它搭建起来,并画出第一张作品。 1. 为什么你需要这个“云端画室”? 在深入动手之前,我们先搞清楚,这个工具到底能帮你解决什么问题。 1.1 传统AI绘画的三大痛点 如果你之前尝试过一些AI绘画工具,可能会对这几个问题深有体会: 1. 部署复杂:想用开源的Stable Diffusion?光是安装Python、

Vivado 使用教程

Vivado 使用教程

目录 一、创建工程 二、创建文件 三、编写代码 四、仿真验证 五、配置管脚 六、生成Bitstream文件并烧录 一、创建工程 1.左边创建(或打开)工程,右侧可以快速打开最近打开过的工程。 2.来到这一步,命名工程并设置工程的存放路径(这里以D触发器为例) 3.选择RTL点击next。会来到添加文件环节(可以在这里添加.v等文件,不过后面再添加是一样的)直接点击next。 4.选择芯片型号(根据开发板选,这里随便选的),完成后点next会弹出信息概要,finish完成。         二、创建文件 完成上述步骤会进入当前界面: 1.工程管理器add sourse添加(创建)设计文件,创建文件后选择Verilog语言并命名。 2.定义端口(可选),若在这定义后,