政治正确性通过针对非初学者的SystemVerilog设计芯片书籍渗透俄罗斯

最后,在俄罗斯发行了有关SystemVerilog教科书,其水平高于初学者 。 教科书描述了在NVidia,Intel,AMD,Apple和其他电子公司进行采访时所要求的技术:同时声明和功能覆盖的使用,现在不仅需要验证工程师,还需要芯片设计人员; 具有增量周期的模拟器算法; 对静态时序分析的理性解释; 通过硬件队列的硬件单元通信图; 使用带有数据路径等的有限状态机来实现这些通信

在关于后者的章节中,俄罗斯读者可能会对“政治上正确的系统”一词感到困惑。 那是什么意思? 这可能是对2003年在洛杉矶县发生事件的暗示。 洛杉矶官员要求制造商,供应商和承包商停止使用“主/从”一词来表示计算机设备,因为该县的一名雇员被提醒曾经有过奴隶。

现在,技术文献作者正在避开术语“主/从”。 非裔美国人的工程师也在现代美国工作(例如,来自喀麦隆的Sofia Mvokani-左图),旧术语的使用似乎是过时的,就像乌克兰技术文献中的“泛/奴隶”一词看起来会代替公认的“铅/铅”(俄语“领袖/奴隶”)。

这不是第一次非裔美国人争取民权的主题出现在俄罗斯电子教育中。 例如,著名的电子学教育专家Tatyana Volkova穿着一件带有“ Black Panthers”(加利福尼亚运动)标志的T恤,该运动曾一度认为和平抗议不足,并进行了武装抗议。



塔季扬娜·亚历山德罗夫娜(Tatyana Alexandrovna)皮肤下的标志的完整图像已被裁剪,但主要是我将讨论增量周期和状态机:

下面是有关主/从和承诺的“黑豹”标志的文章的屏幕截图,之后我们将其直接作为本书。



首先,唐纳德·托马斯(Donald Thomas)是《 SystemVerilog上系统的逻辑设计和验证》一书的作者(2019年俄文版,DMK-Press,2016年英文版),与唐纳德·托马斯(Donald Thomas)以及菲利普·墨尔比(Philip Murbi)合着,是1991年Donald Thomas和Philip Moorby撰写的Verilog硬件描述语言。 到了1991年,许多电子公司仍然按照旧的方式设计微芯片,并在屏幕上用鼠标绘制它们。 逻辑综合技术刚刚离开实验室进行生产。 硬件描述语言被认为是用于编写模型和测试,而不是用于创建最终电路的源代码; 除了当时关闭了VHDL和Verilog外,还有许多小型专有语言,例如Abel,CUPL,PALASM; 英特尔和MIPS具有内部硬件描述语言。

在这样的环境下,Thomas和Murbi的书问世了,对于1990年代的数字电路设计者来说,这本书与Kernigan-Richie的C程序员的书以及Bjarni Straustrup的C ++程序员的书一样。 从1991年到2002年,这本书共经历了5个版本的考验,但是对于iPhone时代来说,显然是不够的。 在2016年,唐纳德·托马斯(Donald Thomas)决定赶上并发行新书,在其中他描述了25年以来在语言和方法论上的关键创新。 在Verilog成为整个行业通用基础的25年间,在上面写下了各种计划,包括臭名昭著的iPhone和特斯拉的控制计算机,再到俄罗斯的军用直升机。



接下来,我将用蓝色文本突出显示我的评论,以将其与书中的图片分开。

甚至在这本书的正文之前,都有“上下文:寄存器注册级别的设计”一章的前期内容,以便程序员,学童,或者说是热衷于原型开发委员会的爱好者,从书架上拿走这本书,可以立即理解所讲的内容以及如何使用这本书。 它说:

数字系统的芯片上有数十亿个晶体管。 业余爱好者当然可以绘制多个逻辑门并将其与电线连接作为规范(用于在面包板上实现),但是对于商业项目来说,这是一个古老的故事...现代系统以硬件描述语言(例如SystemVerilog)指定。


同时,这是一张简化的图片,用于说明工厂中的文字如何变成微电路的轨迹和晶体管:



序言后书中的第一个单词是“模拟器”。 为了理解硬件描述语言,您需要清楚地知道,仿真器的合成子集不是编程语言,而是用于描述电路的语言。 就像HTML并不是一种编程语言,而是一种用于描述网页的语言。 虽然编程语言旨在被编译为处理器指令链,但是硬件描述语言旨在被(尤其)转换为处理器铁本身。 在这种情况下,在投入使用之前,需要检查硬件描述语言中的代码,为此目的,需要专门的解释器(称为模拟器)。

在本书的开头,唐纳德·托马斯(Donald Thomas)显示了模拟器的简化图片,在本书的结尾,他阐明并补充了它:



模拟器具有事件队列和模拟时间:



在模拟的当前时刻(当前增量周期中)和将来时,一个事件都可以引发一个新事件。 在当前增量周期中,首先处理由所谓的阻塞分配生成的所有事件,然后再处理由非阻塞分配生成的事件。 对于正确模拟铁中电信号传播的并行语义,这是必需的:



除了合成的Verilogue子集外,还有一个非合成的子集。 它旨在描述测试环境和测试,现在可以认为它是一种编程语言。 对于测试环境事件和监视器,引入了其他模拟器步骤:



对模拟器算法的准确了解对于避免与所谓的比赛(竞赛条件)相关的各种错误非常有用。 当我干预工程师时,我总是请他们举例说明Verilog中的竞争状况。 而且,如果对于年轻的RTL设计和设计验证工程师来说,这样的知识是非常可取的,但并非在所有方面都是100%必要的,那就是直接为此知识付费的专业。 我说的是在Synopsys VCS,Cadence IES和Mentor ModelSim团队中工作的程序员。

Synopsys和Cadence是两家位于加利福尼亚州的公司,彼此相距15分钟车程。 他们只有几千名员工,但是他们控制着全世界微电路的发展-在英特尔,苹果,三星,华为,甚至在为军事装备制造芯片的俄罗斯秘密机构中。

如果普京,罗戈津和维克塞尔伯格同志真的想在俄罗斯引入进口替代产品,那么他们可以资助俄罗斯模拟Synopsys VCS(用于仿真仿真),Synopsys Design Compiler(用于仿真逻辑)和Synopsys IC Compiler(用于逻辑合成结果的物理放置)的开发) 俄罗斯可能有数千名精通数学的程序员。

尽管这些软件产品的许可证相当容易破解,但是在没有支持的情况下使用它们很困难。 如果华为与Synopsys和Cadence断开连接,从某种意义上说,它们将比与Android甚至ARM内核断开连接的情况更糟。

是的,这是唐纳德·托马斯(Donald Thomas)书结尾处的改进算法。 如果您不全心学习,那么干预Synopsys,Cadence,Siemens / Mentor,Xilinx中的模拟小组是没有用的,他们会请您将其画在板上,并提出如何优化特定案例的建议:



在书的开头阐明了模拟之后,唐纳德·托马斯(Donald Thomas)就这样描述了SystemVerilog语言。 该语言在2002年成为Verilog的超集,这是Verilog-2001,Vera和Superlog语言的合并,以及来自Property Specification Language(PSL)的思想的补充,这些思想被转换为SystemVerilog断言(SVA)。

唐纳德·托马斯(Donald Thomas)相信您已经在某个地方学习了数字设计的基础知识,因此将各种著名的作品(例如卡诺(Carnot)卡)编织到了叙述结构中。 卡诺图在1960年代用于电路的手动设计,此后该方法被使用Quine-McCluskey算法和自动逻辑优化器Espresso的逻辑自动优化所取代。 因此,卡诺卡出现在所有有关数字逻辑设计的大学教科书中,但它们似乎悬而未决。 在这里,唐纳德·托马斯(Donald Thomas)将卡诺(C​​arnot)地图附加到21世纪Verilo上设计师的生活中:



此外,唐纳德·托马斯(Donald Thomas)发表了有关有限状态机的文章,他给出了:1)严格的数学定义; 2)图表; 3)代码; 4)之后,它开始将它们扩展到具有数据路径的有限状态机-硬件流程; 5)之后,根据简单的“政治上正确的”(请参见上文)协议,并使用硬件队列,这些流开始与他进行交互。




这是带有数据路径的简单自动机的代码,Thomas举了第一个例子:




接下来,托马斯有一章关于静态时序分析。 没什么特别的,但是比许多印度流行的网站干净的“如何通过VLSI采访”。 并且比一些关于veril的书更全面,后者虽然乏味地探讨了该语言的语法,但并未真正展示如何使用它。

为什么需要静态时序分析? 在真实的硬件中,与处理器向程序员展示的错觉相反,每次计算都经过一个时间间隔,当所有垃圾都在线路上时,不仅清楚地计算出零和一,而且还包括任何随机毛刺,即毛刺,通常禁区中的非数字值。 例如,如果您将所有高于0.7伏的电压都视为数字单位,而所有低于0.3伏的电压都视为数字零,那么电线上可能会出现0.4伏。

最后,电路中的所有信号都按照自己的方式行事,情况得到了缓解,但这种“最终”应小于时钟信号的周期(clock)。 该周期与电路工作的频率成反比(千兆赫,兆赫)。

如果在光圈瞬间(这种信号变化的间隔),计算或逻辑运算的确定结果没有落入D触发器(最小存储元件)中,则电路状态将变为垃圾-卫星或反应堆将爆炸,iPhone将停止接听电话。 整个设备设计人员都需要了解逻辑。

为什么分析是静态的? 在1980年代,它是动态的-通过仿真澄清了延迟。 事实证明,这对于具有数十万,数百万和数十亿个晶体管的电路是不可靠的,现在,根据合成后对信号路径的分析,所有延迟都是静态计算的。



时钟信号也可能会延迟一段时间到达芯片的不同部分,这给这个厨房增加了另一个不确定性,需要消除(幸运的是,不是手动进行,而是借助时钟综合树程序和其他方法):



在有关流量的章节中,Thomas讨论了具有数据路径的并行操作状态机如何交换信息(包括使用缓冲区和队列)的几个基本选项。 正如在设计/电路本身中,在寄存器传输级别上一样,因此在电路的行为模型或测试环境中也是如此。 在阅读Thomas时,最好自己编写和调试示例,以描述他描述的所有协议情况。 事实是,他们喜欢在电子公司进行第二次面试时,在黑板上或计算机上编写有关此类主题的代码(小型控制有限状态机,两个模块之间的数据流,流水线数据路径或仅用于硬件队列的代码)。 如果您可以在20分钟内用30到50行的代码写出Thomas描述的任何组合的示例,那么您将给人留下很好的印象。 难以学习-易于战斗。

带有多个端口队列的路由器的测试环境(图8.3)是一个受欢迎的示例,用于说明验证方法。 可能是因为其中一些方法是由Cisco和其他设计网络硬件芯片的公司发明的。



在6.2.2节。 Thomas描述了线程交互的一种选择-分步同步(锁定步骤)。 锁步应用之一是高可靠性系统,例如在汽车电子中。 一种特殊情况:两个处理器可以延迟几个周期执行同一程序,并且在执行过程中,特殊电路可以验证它们具有相同的结果。




Thomas显然关心可靠性,因为除了锁定步骤外,他还引用了CRC(一种循环冗余码)的用途,以检测数据传输中的错误。 同时,Thomas讲了如何使用线性反馈移位寄存器LFSR计算CRC。 一个年轻的工程师都需要这一切。 这是托马斯(Thomas)的书的优势-尽管它并不总是深入研究,但涉及许多主题并显示了挖掘的地方:




在描述CRC时,Thomas提到了Hacker's Delight在俄罗斯写的一本非常有趣且被误解的书:



唐纳德·托马斯(Donald Thomas)在他的新书中谈到了旧书中根本没有的三种技术:

  1. 自动生成具有约束规则的伪随机事务(受约束的随机事务/约束求解器)。
  2. 考虑通过有限随机交易轰炸设计而产生的有趣场景的覆盖范围,功能覆盖范围。
  3. 时间逻辑语句的语言(并发断言)及其在模拟和使用形式验证程序的设计属性自动证明中的使用。


仅在21世纪,这三项技术才以良好的方式进入了该行业,但它们的进入却相当牢固。 最初,验证工程师将它们全部用于创建测试环境,但是现在,对功能范围和时间断言语言(SystemVerilog断言-SVA)的了解也需要设计人员。 托马斯(Thomas)有一定的最低要求,可以帮助您避免电话采访中的烦恼,但是对于实际工作,您需要了解更多。 而且,不仅是这种时间陈述的语言,而且还借助它的调试实践来帮助模拟器为每个陈述生成并行的有限状态机,并使用形式验证程序。 近年来,基于声明的正式验证已在Apple,AMD和其他此类公司中大量实施。

我有一个朋友下载了关于时态陈述语言的这本书,并在整个新年假期学习了这本书,而不是带着女孩去夏威夷旅行。 从这里您可以了解SystemVerilog断言(SVA)对职业和行业的重要性。 的确,为了完整起见,我必须提到他是台湾移民的儿子,他们对这类事情的态度比俄罗斯人更为严厉。

这是Thomas处理生成伪随机事务(具有rand字段的事务及其使用约束构造的限制)的处理方式:



这是Thomas处理功能覆盖率的方法-覆盖组/覆盖点/箱,考虑了多个可变覆盖(十字)的组合,使用通配符箱,值范围以及状态机中的过渡覆盖:



这是最简单的时间陈述的示例“如果q在时钟信号的上升沿为真,则序列s2必须在整个循环中执行,其中r首先为真,而s在另外三个循环中”:



唐纳德·托马斯(Donald Thomas)所著的《 SystemVerilog上的系统的逻辑设计和验证》一书之前和之后该读什么书?


如果您对我的帖子一无所知,则可以尝试阅读David Harris和Sarah Harris所著的“ Digital Circuitry and Computer Architecture”一书。 只要读者有动力,所有可以阅读和计数的人都可以理解Harris&Harris这本书。 本书从高中阶段开始-电压,二进制数-并以其自己的处理器设计为基础。

剧透:戴维·哈里斯(David Harris)和莎拉·哈里斯(Sarah Harris)不是夫妻,甚至不是兄弟姐妹。 他们只是同名人物,他们偶然开始在同一所大学任教,并在那期间写了一本书。

照片的左侧是新西伯利亚Academgorodok的女孩伊琳娜(Irina),手持英文版的哈里斯和哈里斯(Harris&Harris),右侧是她的俄语版。



在读完Donald Thomas的书之后,我建议下载Cliff Cummings的文章。 他是最有名的综合和验证的Veril培训师。 阅读唐纳德·托马斯(Donald Thomas)的书时,我想到“很多时候插入来自Cliff Cummings的某某东西会很好”以确保完整性。Cliff在研讨会上为每个学生收取$ 1,000- $ 3,000,具体取决于研讨会的持续时间(每天至每周),电子公司为提高未经大学训练有素的工程师的质量而付费。即使在阿拉巴马州的斯坦福,并不是每个人都学到这一点-我有一个斯坦福的实习生,我从他那里知道。如果您在阅读了Donald Thomas之后下载了Cliff Cummings的所有免费文章,那么您将节省所有这笔钱。

这两篇文章是必需的-他们希望在采访中到处询问:

使用系统Verilog 仿真的时钟域交叉(CDC)设计和验证技术

以及用于异步FIFO比较的异步FIFO设计的综合技术

建议阅读这三篇文章,尤其是有关删除异步重置,重新编码FSM状态和FSM样式“ case(1'b1)// synopsys parallel_case ... state [STATE_N]:...”的文章,该文章长期以来一直在高速芯片中使用。 Sun Microsystems,并将继续使用:

异步和同步复位设计技术-

具有经过综合优化,无故障输出的FSM设计的 零件Deux 编码和脚本技术,

使用新系统Verilog 3.0增强功能的可合成有限状态机设计技术

这是一篇很好奇的文章,您会发现缺乏对Verilogue的思考,自1980年代以来一直如此。虽然现在在静态时序分析时代,这已经不那么重要了,但是惯性和运输延迟有时会在文献和代码中提到,您应该知道如何对它们进行建模:

为Verilog行为模型添加延迟的正确方法

这就是Cliff Cummings的本人:

Source: https://habr.com/ru/post/zh-CN465969/


All Articles