打印

关于system verilog 和 systemc 的几点疑惑

[复制链接]
5674|24
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
xiaoyuan_ly|  楼主 | 2011-4-24 00:45 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
如题: 一个新手的一些疑惑!

1、使用system verilog ,可以直接的使用xilinx或altera的集成环境仿真和生成最终的下载代码吗??(只要被测试和验证的代码是“可综合”的就行。)
2、使用system  c, 被测试和验证的代码也是“可综合”的(对于system c 来说),但问题是能不能被xilinx或altera 的集成环境支持和最终生成下载代码吗?? 如果不能,是不是还是要将尽管“可综合” 的 system c 代码重新在编写成 基本的VERILOG吗??!
3、不知道我的表达清楚了没有??!! 谢谢!!!

相关帖子

沙发
AutoESL| | 2011-4-24 12:08 | 只看该作者
可以直接查查xilinx的xst的用户手册,看看支不支持。

使用特权

评论回复
板凳
AutoESL| | 2011-4-24 12:16 | 只看该作者
据我所知,一般都需要手工把systemc的代码转换成verilog,或者用工具自动转换

使用特权

评论回复
评分
参与人数 1威望 +1 收起 理由
xiaoyuan_ly + 1
地板
xiaoyuan_ly|  楼主 | 2011-4-24 12:27 | 只看该作者
楼上的,谢谢你的回答!!!---

我可不可以这么理解: 就是现在的systemC的代码描述的可综合的程度更加好了,用手工把systemc的代码转换成verilog,更加的方便了,并且也不会产生手工转无法为verilog的情况出现? 你说呢? 谢谢!!

使用特权

评论回复
5
xiaoyuan_ly|  楼主 | 2011-4-24 12:32 | 只看该作者
据我所知,一般都需要手工把systemc的代码转换成verilog,或者用工具自动转换
AutoESL 发表于 2011-4-24 12:16



用工具转换,这工具不是免费的吧??!!!

使用特权

评论回复
6
AutoESL| | 2011-4-24 12:43 | 只看该作者
用SystemC设计大多都是为了系统验证,性能评估和软硬件并行开发,最终的SystemC代码并不能直接进行综合(目前还不支持,不久的将来就很难说了)
所以大多数公司在用SystemC进行系统建模的同时,也在开发相应的RTL代码用于综合。
目前SystemC已经算是高级语言了,有很多公司在设计SystemC到RTL的自动转换工具,这些工具支持systemc的一个子集,也就是你说的可综合的那一部分,这样,以后就不用手动来转换SystemC的设计了

使用特权

评论回复
评分
参与人数 1威望 +1 收起 理由
xiaoyuan_ly + 1
7
xiaoyuan_ly|  楼主 | 2011-4-24 13:06 | 只看该作者
本帖最后由 xiaoyuan_ly 于 2011-4-24 13:15 编辑

AUTOESL:  
    做为象你这样对自动电子系统级设计很关注的人来说,能说说你自己的FPGA开发上的平台搭建情况吗??!!  我是新手,刚开始在1-2个月前的样子,所以想向你多请教,希望能得到更多的信息,以利于自己的FPGA平台的搭建。我做的情况是这样的:
  1、做了2个项目,都是比较小的。都没有前仿和后仿,也没有优化综合之类的。我的方式是: 一个项目是直接的硬件搭建的平台上调试做。我是先找市面上有没有类似我项目的资源开发板,然后买来,直接做的。只用了开发集成环境。
  2、另一个是买最小系统的FPGA(再不行就自己做板子)。可是这些都是对付小项目可行,大一点的就没办法了。没有前仿就是最大的误区---做的很累。
  3、买了很多本的书,关于system verilog的和systemc ,还有方法学上面的,但这些似乎离我很远,具体的细节平台搭建更是无从谈起,迷茫的要死。
  4、所以还请你给与一定的指点。谢谢!!!

使用特权

评论回复
8
AutoESL| | 2011-4-24 13:17 | 只看该作者
你看看我的签名档就知道我做什么的了,呵呵
我做的都是高层次综合方面的东西,接触过很多IC设计公司,很多都是用C++或者SystemC搭建仿真平台,他们也遇到你提到的问题,仿真平台的设计到可综合的RTL的转换,目前来说,大部分都是手工转换,我做的都是自动转换。所以对你的问题了解一些,但没有丰富的经验供你参考。
这个论坛里有很多牛人,看看他们有没有好的经验分享一下。

使用特权

评论回复
评分
参与人数 1威望 +1 收起 理由
xiaoyuan_ly + 1
9
xiaoyuan_ly|  楼主 | 2011-4-24 13:22 | 只看该作者
本帖最后由 xiaoyuan_ly 于 2011-4-24 13:34 编辑

谢谢!!! 非常感谢!! 真的。
      近来想做个51核,也参考了其他的51核,对于51我很熟悉,所以想搞一个自己的,但先期的工作方面因为没有可以借鉴的东西,在速度和外围方面的权衡只能一个一个自己验证来,有多少次的推倒再重来,所以真的很累。就觉得如果真的是按自己的这个思路搞的话,绝对的会累死。有太多我自己未知的东西,自己以前没有做过,所以都有可能成为验证了之后不行推倒重来的原因。所以我再搞了2个礼拜之后,就暂时停止了。想找一个更好的平台搭建后,至少可以前仿,再前仿后的核心代码(就是功能测试的那部分代码)至少是要很容易转换成RTL级--对于自动转换我倒不是很奢望,但至少能手工转化(我自己充当这个转换机器人得了)。
     未了,还希望论坛中的各位给点意见和建议,谢谢!!!!!

使用特权

评论回复
10
赤色旋风| | 2011-4-24 16:29 | 只看该作者
学习

使用特权

评论回复
11
bairan168| | 2011-4-24 17:33 | 只看该作者
学习了。

使用特权

评论回复
12
xiaoyuan_ly|  楼主 | 2011-4-24 21:06 | 只看该作者
以前总觉得C++这种高级语言离我很远,甚至自己都觉得这辈子是不可能去掌握它--掌握了对自己的工作也没有太多发挥的地方。可是现在看来就有点错了,在抽象层面的描述可以完全的把握系统级的开发工作。如果我又想做好系统级的开发工作,又希望不要那么的抽象去描述,大家有什么好的方法吗?!  都能来说说吗?! 谢谢!!!

使用特权

评论回复
13
AutoESL| | 2011-4-25 09:26 | 只看该作者
其实,C++只是一种开发语言而已,是一个工具.它不仅可以开发软件,用来描述硬件也是完全可以的.
一个大的系统,都有算法级别的验证,一般都用这种抽象层面的语言来描述,建模,验证.
就算SystemC,也是C++的一个子集.
但用C++来精确的描述硬件的确是有一些局限性,毕竟一个是顺序执行的东西,一个是并行的东西.

使用特权

评论回复
14
xiaoyuan_ly|  楼主 | 2011-4-25 10:51 | 只看该作者
AUTOESL:
      昨天,下载了钱能的C++第二版,恶补了半天。发现C++对硬件描述来说,有点庞大了。至少从抽象数据结构来说,就大了,毕竟对硬件来说,硬件的数据结构总是相当的“物理”的,没有那种对象的“抽象”,硬件的数据结构无非存储结构、外设寄存器等等,谈得上抽象点的也就是该是“总线”之类的数据结构,但也是相当的“物理”。
    AUTOESL,我觉得顺序执行的东西,和并行的东西并不存在太大的局限或者说分离,只是我觉得大家有没有容忍或者有耐心来用顺序执行来表现它的并行执行。当顺序执行的速度达到了一定的高度,所谓的顺序和并行都是相对的概念。你说呢??!!  “但用C++来精确的描述硬件的确是有一些局限性,毕竟一个是顺序执行的东西,一个是并行的东西.”-----AUTOESL,你能不能举个列子或着给点思路或题目,来说明这个可能存在的局限性,让我也能了解点。谢谢!!!

使用特权

评论回复
15
AutoESL| | 2011-4-25 12:30 | 只看该作者
14# xiaoyuan_ly

说的不错,并行的东西,用顺利的方式来解决是可以的.

用C++来描述硬件,有些地方不是那么容易,举个例子:
比如一个design的fifo接口,读数据的时候一般都要看empty信号,有数据才发起读操作,否则就保持当前的状态直到有数据的时候.
这个电路用hdl来描述很容易,用C++来描述就不是很容易了.

使用特权

评论回复
16
AutoESL| | 2011-4-25 12:36 | 只看该作者
在数据通路方面,用C++很容易描述相应的硬件结构
但是在很多控制逻辑结构的设计中,C++描述就显得非常吃力:
比如:VGA接口,在这一组信号中,行同步,场同步等控制信号和数据信号的配合有严格的周期限制,这时候用C++描述就不会是那么容易了

使用特权

评论回复
17
xiaoyuan_ly|  楼主 | 2011-4-25 13:19 | 只看该作者
AUTOESL:  我觉得你说的FIFO和VGA接口这2个例子,并不在于它们容易不容易描述的问题,而是站在不同角度看待一个相同的问题。但是我们的目的:不管我们用怎么样的角度去看问题,目的总是要去解决这些问题。所以我们用C++这样的角度去描述和用HDL的角度去描述,而我们现有的工具或平台无法将C++的这样的描述很容易的转换为RTL的,而用HDL描述是和现有的工具或平台几乎是无缝连接的。你说的这个“容易”和“不容易”,我可不可以这么理解?! 或者说基于过程的描述被现有的工具支持,而基于抽象对象的描述(C++描述)只有和基于过程的描述(HDL描述)在“重叠”的时候或者说“等价”的时候,才能很“容易”的转换为RTL级的。你说,我可不可以这么的理解?! 谢谢!   既然如此,那么这类“不重叠”或“不等价”的C++描述该在工作中如何的解决或避开,但又能达成我们的设计目的呢?! -比如说,在遇到类似的问题,我们直接不用C++描述,而直接用HDL描述将其封装成“对象”,直接给C++前仿使用,你说这样可以吗??!!   对于这个问题,你的解决思路是怎么样的? 再次感谢你的无私解惑!!!!

使用特权

评论回复
18
xiaoyuan_ly|  楼主 | 2011-4-25 13:37 | 只看该作者
AUTOESL:  接上楼的疑问,如果我们不把“VGA接口”作为一个“对象”,而是再将其“这个VGA接口”对象分解成“VGA接口中”所有信号的“细分对象”,并且每个“细分对象”都有自己的“方法”(构造),你说这样的做法是不是让描述更加“重叠”或“等价”HDL描述了吗?!  那不是就解决了C++前仿的需要,也解决了后续RTL级转化的难度。  你说呢??!!--  我只是自己天马行空的想法,并没有去验证过,你看这个有可能实现的道理 吗??!!  谢谢!!!

使用特权

评论回复
19
xiaoyuan_ly|  楼主 | 2011-4-25 13:51 | 只看该作者
AUTOESL: 再接上面的疑问,你说它们之间区别的实质是什么??  是不是HDL描述对“方法(构造)的耦合”不敏感,而C++描述对”方法(构造)的耦合“敏感造成的?  如果是这样,那将C++的描述向更低级的描述,不就可以解决这个问题了吗? 现在我们只描述到RTL级,更低级的门级或晶体管级不就可以了吗?! -那也不是解决C++前仿的需要,也解决了后续RTL级转化的难度?!  你说呢??!!

使用特权

评论回复
20
AutoESL| | 2011-4-25 13:56 | 只看该作者
的确是如此,难点还是在于没有非常理想的工具把C++的描述转换成对应的RTL的描述.
对于FIFO或者VGA,完全可以用C++来封装,描述.
就算是把每个信号细分开来,用C来描述也是完全可以的.
在把这些描述转换成RTL时,如果用工具完成,这就会严重依赖工具的能力了
如果是手工转换,RTL工程师就得完全理解C++建模工程师的模型.

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

27

主题

284

帖子

1

粉丝