SystemVerilog Support

news2025/1/26 15:52:02

介绍

AMD Vivado™合成支持可以合成的SystemVerilog RTL的子集。这个以下部分介绍了这些数据类型。

针对特定文件的SystemVerilog

默认情况下,Vivado合成工具使用Verilog 2005语法编译*.v文件和*.sv文件使用SystemVerilog语法。要在Vivado IDE中将SystemVerilog作为特定*.v文件的目标,请右键单击该文件,然后选择源节点属性。在“源文件属性”窗口中,将“文件类型”更改为SystemVerilog,然后单击“确定”。

设置属性的Tcl命令

或者,您可以在Tcl控制台中使用以下Tcl命令:

set_property file_type SystemVerilog[get_files<filename>.v]

以下部分介绍Vivado IDE中支持的SystemVerilog类型。

编制单位

System Verilog通过使用compilation支持单文件和多文件编译单位。

编译单元是一起编译的一个或多个SV源文件的集合。每一个编译单元和单个库相关联。编译单元范围是一个对于全局编译单元来说,作用域是本地的,它具有位于任何其他编译单元之外的所有声明设计范围。通常是函数、任务、参数、网络、变量和用户定义的类型在编译单元下的模块、接口、包或程序外部声明范围

例如,考虑以下设计。

在Tcl模式中

read_verilog-lib lib1{test1.sv}

read_verilog-lib lib2{test2.sv}

read_verilog test3.sv

集成电路设备

在前面的例子中,如果test1.sv在编译单元范围中有声明,例如params,typedefs等等,比如

Parameter P1 =2; // Parameter declared out of module scope
Module test1 (<port list>)
...
...
endmodule

并如前所述读取文件。编译器单元范围从读取文件test1.sv开始在lib1下,但是在使用lib2读取test2.sv时是非法的,因为编译单元应该与单个库相关联。这可以通过以下方式解决:

在Tcl模式下,将所有文件放在一个库中。

read_verilog -lib lib1 {test1.sv}
read_verilog -lib lib1 {test2.sv}
read_verilog test3.sv
or not declaring libraries at all
read_verilog {test1.sv }
read_verilog {test2.sv}
read_verilog test3.sv
or (single file compilation unit mode)
read_verilog -lib lib1 {test1.sv}
read_verilog -lib lib2 {test2.sv}
read_verilog test3.sv
synth_design -top <top_name> -sfcu

数据类型

支持以下数据类型以及控制它们的机制。

公告

按如下方式声明RTL中的变量:

[var][DataType]名称;

哪里

•var是可选的,如果不在声明中,则是隐含的。

•DataType是以下类型之一:

○ integer_vector_type:bit、logic或reg

○ integer_tom_type:byte、shortint、int、longint、integer或time

○ non_integer_type:shortreal、real或realtime

○ 结构

○ 枚举

整数数据类型

SystemVerilog支持以下整数类型:

•shortint:双状态16位有符号整数

•int:2状态32位有符号整数

•长度:2状态64位有符号整数

•字节:2态8位有符号整数

•位:2状态,用户定义的矢量大小

•逻辑:4状态用户定义的矢量大小

•reg:4状态用户定义的矢量大小

•整数:四态32位有符号整数

•时间:四态64位无符号整数

4态和2态是指可以分配给这些类型的值,如下所示:

•2状态允许0和1。

•4状态还允许X和Z状态。

X和Z态不能总是合成的;因此,2状态和4状态的项目是以相同的方式合成。

小心!使用4状态变量时要小心;RTL与模拟的不匹配可能发生。

•类型byte、shortint、int、integer和longint默认为带符号值。

•类型bit、reg和logic默认为无符号值。

有关Verilog的更多信息,请参阅Vivado Design Suite用户指南:逻辑仿真(UG900)模拟格式。

实数

合成支持实数;但是,它们不能用于创建逻辑。它们只能是用作参数值。SystemVerilog支持的真实类型有:

•真实

•短期

•实时

无效数据类型

只有没有返回值的函数才支持void数据类型。

User-Defined Types
Vivado synthesis supports user-defined types, which are defined using the typedef keyword. Use
the following syntax:
typedef data_type type_identifier {size};
or
typedef [enum, struct] type_identifier;
Enum Types
Enumerated types can be declared with the following syntax:
enum [type] {enum_name1, enum_name2...enum_namex} identifier
If no type is specified, the enum defaults to int . Following is an example:
enum {sun, mon, tues, wed, thurs, fri, sat} day_of_week;
This code generates an enum of int with seven values. The values that are given to these names
start with 0 and increment, so that, sun = 0 and sat = 6 .
To override the default values, use code as in the following example:
enum {sun=1, mon, tues, wed, thurs, fri, sat} day_of week;
In this case, sun is 1 and sat is 7.
The following is another example how to override defaults:
enum {sun, mon=3, tues, wed, thurs=10, fri=12, sat} day_of_week;
In this case, sun=0 , mon=3 , tues=4 , wed=5 , thurs=10 , fri=12 , and sat=13 .
Enumerated types can also be used with the typedef keyword.
typedef enum {sun,mon,tues,wed,thurs,fri,sat} day_of_week; day_of_week
my_day;
The preceding example defines a signal called my_day that is of type day_of_week . You can
also specify a range of enums . For example, the preceding example can be specified as:
enum {day[7]} day_of_week;
This creates an enumerated type called day_of_week with seven elements as follows: day0 ,
day1 day6 .
Following are other ways to use enumerated types:
enum {day[1:7]} day_of_week; // creates day1,day2...day7
enum {day[7] = 5} day_of_week; //creates day0=5, day1=6... day6=11

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1495038.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

**蓝桥OJ 178全球变暖 DFS

蓝桥OJ 178全球变暖 思路: 将每一座岛屿用一个颜色scc代替, 用dx[]和dy[]判断他的上下左右是否需要标记颜色,如果已经标记过颜色或者是海洋就跳过.后面的淹没,实际上就是哪个块上下左右有陆地,那么就不会被淹没,我用一个tag标记,如果上下左右一旦有海洋,tag就变为false.如果tag…

开发者如何选择代码签名证书?

代码签名证书是一种由权威认证机构颁发的数字证书&#xff0c;它允许软件开发者对其代码进行数字签名。这种签名基于公钥基础设施&#xff08;PKI&#xff09;技术&#xff0c;使用一对密钥&#xff1a;一个私钥和一个公钥。私钥用于生成签名&#xff0c;而公钥则嵌入到代码签名…

Linux学习-二级指针的使用

目录 ###指针传参时要用二级指针 ###函数体内部想要修改函数外部指针变量值的时候需要使用二级指针(指针变量的地址) ###指针传参时要用二级指针 char *str[5]; int Fun(char **ppstr,int len); ###函数体内部想要修改函数外部指针变量值的时候需要使用二级指针(指针变量的…

GCN原理回顾

Cora_dataset description Cora数据集是一个常用的学术文献用网络数据集&#xff0c;用于研究学术文献分类和图网络分析等任务。 该数据集由机器学习领域的博士论文摘要组成&#xff0c;共计2708篇论文&#xff0c;涵盖了7个不同的学科领域。每篇论文都有一个唯一的ID&#xf…

桥接模式: 消息发送器设计

桥接模式是一种结构型设计模式&#xff0c;它将抽象部分与它的实现部分分离&#xff0c;使它们可以独立地变化。桥接模式通过将抽象和实现分离&#xff0c;可以让它们可以独立地变化&#xff0c;从而提高系统的灵活性和可扩展性。 在桥接模式中&#xff0c;有两个重要的概念&a…

JavaBoy假期如何学习项目?弯道块才是真的快!

至暗时刻 老话说的好&#xff0c;弯道快才是真的快&#xff0c;谁直线不会加油&#xff1f;每到假期都是在座的各位弯道超车的时候。转眼自己已经出来搬了快四年砖头了&#xff0c;偶尔访问下牛客发现行情真是一年不如一年。。。不由得回想起自己春招时候的经历。 回想起2020年…

数据分析-Pandas数据的直方图探查

数据分析-Pandas数据的直方图探查 数据分析和处理中&#xff0c;难免会遇到各种数据&#xff0c;那么数据呈现怎样的规律呢&#xff1f;不管金融数据&#xff0c;风控数据&#xff0c;营销数据等等&#xff0c;莫不如此。如何通过图示展示数据的规律&#xff1f; 数据表&…

【贪心算法】Leetcode 455.分发饼干 376. 摆动序列 53. 最大子数组和

【贪心算法】Leetcode 455 分发饼干 376. 摆动序列【规律很多】53. 最大子数组和 455 分发饼干局部最优推全局最优&#xff1a;尽量用大饼干去满足大胃口的小朋友 376. 摆动序列【规律很多】思想&#xff1a;注意考虑一个坡度留首尾两个点、平坡、首尾 53. 最大子数组和【好思想…

FreeRTOS学习笔记-基于stm32(1)任务基础知识

一、裸机与RTOS 我们使用的32板子是裸机&#xff0c;又称前后台系统。裸机有如下缺点&#xff1a; 1、实时性差。只能一步一步执行任务&#xff0c;比如在一个while循环中&#xff0c;要想执行上一个任务&#xff0c;就必须把下面的任务执行完&#xff0c;循环一遍后才能执行…

从0开始学习NEON(2)

1、前言 继上一个例子&#xff0c;本次继续来学习NEON&#xff0c;本次学习NEON中向量拼接的操作&#xff0c;主要应用在图像的padding中。 https://blog.csdn.net/weixin_42108183/article/details/136440707 2、案例 2.1 案例1 在某些情况下&#xff0c;需要取在每个向量…

轻松压缩照片大小:简单实用的方法

当您需要通过网络传输或共享照片时&#xff0c;较小的文件大小可以提高传输速度并减少带宽消耗。这适用于通过电子邮件、社交媒体、即时消息应用程序等发送照片的场景。为了解决这个问题&#xff0c;本文将介绍一些简单而有效的方法来压缩照片的大小&#xff0c;以便更方便地分…

python并发编程:IO模型

一 IO模型 二 network IO 再说一下IO发生时涉及的对象和步骤。对于一个network IO \(这里我们以read举例\)&#xff0c;它会涉及到两个系统对象&#xff0c;一个是调用这个IO的process \(or thread\)&#xff0c;另一个就是系统内核\(kernel\)。当一个read操作发生时&#xff…

面试经典150题——基本计算器

​A husband is a man of many miles. ——Unknown 1. 题目描述 2. 题目分析与解析 2.1 思路一——先算括号内的内容 这个题目其实就是编译原理中很小的一个模块了&#xff0c;基本思路还是通过栈来实现。题目的难点主要在&#xff1a; 其中括号优先级的处理&#xff0c;以…

Spring揭秘:ImportBeanDefinitionRegistrar应用场景及实现原理!

内容概念 ImportBeanDefinitionRegistrar接口提供了强大的动态注册Bean的能力&#xff0c;它允许开发者在Spring容器初始化时&#xff0c;灵活地根据特定条件或需求来添加或修改Bean定义&#xff0c;从而实现更为精细的控制和扩展性。这是构建可扩展框架、插件系统或处理复杂配…

请说说你对Vue模板编译的理解

Vue模板编译是Vue.js框架的核心之一&#xff0c;它负责将Vue模板转换成渲染函数&#xff0c;从而实现模板的解析和渲染。要深入了解Vue模板编译&#xff0c;我们需要从编译过程、作用、特点等方面进行详细解析。 1. Vue模板编译的作用 Vue模板编译的主要作用是将Vue模板字符串…

021—pandas 书单整理将同一种书整理在一起

前言 在办公自动化场景下&#xff0c;最常见的需求就是信息的整理&#xff0c;pandas 最擅长复杂数据逻辑的处理&#xff0c;能够让整理工作更加高效&#xff0c;同时不容易出错。今天的案例是将一个平铺的书单按品类进行整理&#xff0c;合并为一行。 需求: 将书按书名进行合…

【python高级编程教程】笔记(python教程、python进阶)第三节:(1)多态与鸭子类型(Polymorphism and Duck Typing)

参考文章1&#xff1a;【比刷剧还爽】清华大佬耗时128小时讲完的Python高级教程&#xff01;全套200集&#xff01;学不会退出IT界&#xff01; 参考文章2&#xff1a;清华教授大力打造的Python高级核心技术&#xff01;整整100集&#xff0c;强烈建议学习&#xff08;Python3…

基于springboot的母婴商城

摘 要 现代经济快节奏发展以及不断完善升级的信息化技术&#xff0c;让传统数据信息的管理升级为软件存储&#xff0c;归纳&#xff0c;集中处理数据信息的管理方式。本母婴商城系统就是在这样的大环境下诞生&#xff0c;其可以帮助管理者在短时间内处理完毕庞大的数据信息&am…

Windows10安装Docker

使用 PowerShell 启用 Hyper-V 以管理员身份打开 PowerShell 控制台。 运行以下命令&#xff1a; PowerShell复制 Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Hyper-V -All如果无法找到此命令&#xff0c;请确保你以管理员身份运行 PowerShell。 安装…

Claude3深夜震撼发布!模型特点分析,附使用教程

Claude3深夜震撼发布&#xff01;模型特点分析&#xff0c;附使用教程 引言 最新发布的Claude3引起了广泛关注&#xff0c;这次发布一举推出了三个不同类型的模型&#xff0c;分别是Claude 3 Haiku、Claude 3 Sonnet和Claude 3 Opus。每个模型都具有独特的特点和能力&#xff…