Google

Lubee's Blog--Digtial IC Fan's Home

WELCOME IC FANS' HOME! --ASIC/IC Design,Logical Design,STA,Digital IC Design,Synthesis, and so on.

2008-11-30

EDA Free Resources

1.来自kakuyou

http://www.icarus.com/eda/verilog/
开源的verilog 编译器,包含模拟器和基本逻辑综合模块。

http://www.geocities.com/SiliconValley/Campus/3216/GTKWave/gtkwave-win32.html
windows版的gtk-wave,一个图形波形察看工具

http://embedded.eecs.berkeley.edu/research.htm
大名鼎鼎的伯克里电子设计部,业界巨头们的工具大部分都是建立在这个部
发布的各种工具的基础上。


2.来自Tony Hsu's Technical View

原文:http://icguy.blogspot.com/2008/05/vmm.html

正当大家把注意力集中在新秀OVM身上、还在担心非开源的VMM如何应对挑战时,昨天Synopsys不声不响地推出了VMM方法学的标准库以及应用的源代码。类似于OVM的官方网站OVM World(http://www.ovmworld.org/),同时发布的还有VMM开源网站http://www.vmmcentral.org/,VMM完整的实现都可以在该网站下载。

Synopsys提供的代码包括以下:

-- VMM Standard Library
-- VMM Register Abstraction Layer application
-- VMM Reusable Environment Composition application
-- VMM Memory Allocation Manager application
-- VMM Hardware Abstraction Layer application
-- VMM Data Stream Scoreboard application
-- VMM Macro Library

这是个令人兴奋的消息!随着验证在IC设计中的重要性不断被重视,EDA们巨头们不断推出新的策略吸引潜在客户。从AVM开源到OVM开源再到 VMM的开源,我们看到的是一系列积极的举措,在不断地推进行业向前发展。不管怎么样,对客户而言,终归是好消息,你需要的是在选择使用哪种方法进行验证工作学时停顿片刻,花点时间仔细考虑下。

既然VMM都接招了,OVM赶快行动吧!至少,也该把OVM的User Guide发出来给支持者一些“新鲜”吧!^_^

3.来自phixcoco

原文:http://blog.csdn.net/phixcoco/archive/2006/08/13/1057134.aspx

SourceForge上搜到的关于Verilog/SystemVerilog/SystemC的开源项目

A: Verilog相关:

·Eclipse Verilog editor
http://sourceforge.net/projects/veditor
http://icarus.com/eda/verilog/
Eclipse Verilog editor is a plugin for the Eclipse IDE. It provides Verilog(IEEE-1364) and VHDL language specific code viewer, contents outline, code assist etc. It helps coding and debugging in hardware development based on Verilog or VHDL.

·Icarus Verilog
http://sourceforge.net/projects/iverilog
Icarus Verilog is an open source Verilog compiler that supports the IEEE-1364 Verilog HDL including IEEE1364-2001 plus extensions.

·Source Navigator for Verilog
http://sourceforge.net/projects/snverilog
http://sources.redhat.com/sourcenav
Source Navigator for Verilog is a verilog parser that allows Source Navigator to be used with the Verilog Hardware Deion Language.

·Icarus Verilog Test Suite
http://sourceforge.net/projects/ivtest
Provides a GPL'd test suite for verification of the verilog language. This project is affiliated with the Icarus Verilog compiler effort at icarus.com.

·Vtracer
http://sourceforge.net/projects/vtracer
VTracer is a Verilog Testbench developer aid. Contains well documented Verilog-Perl co-simulation environment (TCP sockets based), structural Verilog parser, demo Testbenches.

·VeriWell Verilog Simulator
http://sourceforge.net/projects/veriwell
VeriWell is a full Verilog simulator. It supports nearly all of the IEEE1364-1995 standard, as well as PLI 1.0. Yes, VeriWell *is* the same simulator that was sold by Wellspring Solutions in the mid-1990 and was included with the Thomas and Moorby book

·PVSim Verilog Simulator
http://sourceforge.net/projects/pvsim
PVSim is a Verilog Simulator for Mac OS X that uses AlphaX editor's Verilog mode and features a fast compile-simulate-display cycle.

·Verilog Construction Toolkit
http://sourceforge.net/projects/vct
The Verilog Construction Toolkit is a C++ library which provides the ability to read in, create and or modify verilog cell-based structural netlists.

·Verilog Netlist Viewer / Editor
http://sourceforge.net/projects/netedit
The purpose of this tool is creation of tcl/tk - based environment for convenient Verilog netlist viewing and editing. This tool will allow development of TCL s in order to make structural changes in verilog netlist.

·SystemC to Verilog RTL converter
http://sourceforge.net/projects/sysc2ver
sysc2ver - SystemC to Verilog RTL converter

·FPGA C Compiler
http://sourceforge.net/projects/fpgac
FpgaC compiles a subset of the C language to net lists which can be imported into an FPGA vendors tool chains. C provides an excellent alternative to VHDL/Verilog for algorithmic expression of FPGA reconfigurable computing tasks. More info on Home Page.

·vIDE
http://sourceforge.net/projects/vlogide
vIDE is a cross-platform tool for writing and simulating Verilog models. It provides user friendly project management and file editing, integrated simulation engine, waveform viewer, pre-compiled modules, and many other cool features.

·Covered
http://sourceforge.net/projects/covered
Covered is a Verilog code-coverage utility using VCD/LXT style dumpfiles and the design to generate line, toggle, combinational logic and FSM state/arc coverage reports. Covered also contains a built-in race condition checker and GUI report viewer.

·veri-indent
http://sourceforge.net/projects/veriindent
Veri-indent is a verilog source code Parser,Analyzer and Beautifier. (similar to c 'indent' , but more than that). Verilog source can be formatted and Symbol table, list of registers,wires,pli calls in source code can be extracted.

·Teal
http://sourceforge.net/projects/teal
TEAL - C++ multithreaded library to verfiy verilog designs

·Reed-Solomon Core Compiler
http://sourceforge.net/projects/rstk
RSTK is a C language program that generates Reed-Solomon HDL source code modules that can be compiled and synthesized using standard VHDL or Verilog compilers and synthesis tools.

·XSpiceHDL
http://sourceforge.net/projects/xspicehdl
XSpiceHDL, a mixed-mode XSpice-Verilog HDL co-simulation environment incorporating GUI schematic capture, modified XSpice3f5 based engine and TCP inter-process communications via CodeModel and VPI DLL, written in C++ using the wxWindows API.


B: SystemVerilog相关:(真是少得可怜)

·HDLObf
http://sourceforge.net/projects/hdlobf
HDLObf is intended to be a HDL Obfuscator and identifier name change utility. Primarily designed for Verilog/SystemVerilog. Support will be added for VHDL/SystemC in future.


C: SystemC相关:

·Open SystemC Initiative (OSCI)
http://sourceforge.net/projects/systemc
The Open SystemC Initiative (OSCI) is a collaborative effort to support and advance SystemC as a de facto standard for system-level design. SystemC is an interoperable, C++ SoC/IP modeling platform for fast system-level design and verification

·FERMAT SystemC Parser
http://sourceforge.net/projects/systemcxml
FERMAT's SystemC Parser using Doxygen and Xerces-C++ XML

·SCLive
http://sourceforge.net/projects/sclive
SCLive is a modular Linux-Live Distribution dedicated to the OSCI SystemC simulator and it's associated libraries. The distribution provides a fully working environement including a simulator kernel, wavefom viewer, IDE, tutorials and more.

·GreenSocs
http://sourceforge.net/projects/greensocs
http://www.greensocs.com
To develop SystemC infrustructure, basic IP, patches and add on library code for eventual standerdization. The GreenSocs project is made up of a number of contributions (sub projects). Please visit www.greensocs.com for more information.

www.opencores.org是IC行业有名的开源网站,有空了再到那里去转转,说不定会有不少收获!

4.来自sprhawk

原文:http://blog.chinaunix.net/u2/68344/article_85158.html
gEDA是一个Unix/Linux下作电路设计的软件集合--而非一个独立的程序
官方网站见:http://www.geda.seul.org/

取自:http://www.geda.seul.org/tools/index.html
gEDA/gaf软件包所带的工具 (gschem and friends):

* gschem :原理图设计

* gnetlist :网络表生成

* gattrib :属性编辑器

* symbols :符号库

* utils :工具集

* gsymcheck :符号检查

* examples : 例子

* docu……

Labels:

Tar usage summary

  .tar
  解包: tar xvf FileName.tar
  打包:tar cvf FileName.tar DirName
  (注:tar是打包,不是压缩!)
  ---------------------------------------------
  .gz
  解压1:gunzip FileName.gz
  解压2:gzip -d FileName.gz
  压缩:gzip FileName
  .tar.gz 和 .tgz
  解压:tar zxvf FileName.tar.gz
  压缩:tar zcvf FileName.tar.gz DirName
  ---------------------------------------------
  .bz2
  解压1:bzip2 -d FileName.bz2
  解压2:bunzip2 FileName.bz2
  压缩: bzip2 -z FileName
  .tar.bz2
  解压:tar jxvf FileName.tar.bz2
  压缩:tar jcvf FileName.tar.bz2 DirName
  ---------------------------------------------
  .bz
  解压1:bzip2 -d FileName.bz
  解压2:bunzip2 FileName.bz
  压缩:未知
  .tar.bz
  解压:tar jxvf FileName.tar.bz
  压缩:未知
  ---------------------------------------------
  .Z
  解压:uncompress FileName.Z
  压缩:compress FileName
  .tar.Z
  解压:tar Zxvf FileName.tar.Z
  压缩:tar Zcvf FileName.tar.Z DirName
  ---------------------------------------------
  .zip
  解压:unzip FileName.zip
  压缩:zip FileName.zip DirName
  ---------------------------------------------
  .rar
  解压:rar a FileName.rar
  压缩:r ar e FileName.rar
  
  rar请到:http://www.rarsoft.com/download.htm 下载!
  解压后请将rar_static拷贝到/usr/bin目录(其他由$PATH环境变量指定的目录也可以):
  [root@www2 tmp]# cp rar_static /usr/bin/rar
  ---------------------------------------------
  .lha
  解压:lha -e FileName.lha
  压缩:lha -a FileName.lha FileName
  
  lha请到:http://www.infor.kanazawa-it.ac.jp/~ishii/lhaunix/下载!
  >解压后请将lha拷贝到/usr/bin目录(其他由$PATH环境变量指定的目录也可以):
  [root@www2 tmp]# cp lha /usr/bin/
  ---------------------------------------------
  .rpm
  解包:rpm2cpio FileName.rpm | cpio -div
  ---------------------------------------------
  .deb
  解包:ar p FileName.deb data.tar.gz | tar zxf -
  ---------------------------------------------

Labels:

foward:Grep命令使用的详细介绍

关于Linux Grep命令使用的详细介绍


1. grep简介

grep (global search regular expression(RE) and print out the line,全面搜索正则表达式并把行打印出来)是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹配的行打印出来。Unix的grep家族包括grep、 egrep和fgrep。egrep和fgrep的命令只跟grep有很小不同。egrep是grep的扩展,支持更多的re元字符, fgrep就是 fixed grep或fast grep,它们把所有的字母都看作单词,也就是说,正则表达式中的元字符表示回其自身的字面意义,不再特殊。linux 使用GNU版本的grep。它功能更强,可以通过-G、-E、-F命令行选项来使用egrep和fgrep的功能。

grep的工作方式是这样的,它在一个或多个文件中搜索字符串模板。如果模板包括空格,则必须被引用,模板后的所有字符串被看作文件名。搜索的结果被送到屏幕,不影响原文件内容。

grep可用于shell脚本,因为grep通过返回一个状态值来说明搜索的状态,如果模板搜索成功,则返回0,如果搜索不成功,则返回1,如果搜索的文件不存在,则返回2。我们利用这些返回值就可进行一些自动化的文本处理工作。

2. grep正则表达式元字符集(基本集)

^

锚定行的开始 如:'^grep'匹配所有以grep开头的行。

$

锚定行的结束 如:'grep$'匹配所有以grep结尾的行。

匹配一个非换行符的字符 如:'gr.p'匹配gr后接一个任意字符,然后是p。

*

匹配零个或多个先前字符 如:'*grep'匹配所有一个或多个空格后紧跟grep的行。 .*一起用代表任意字符。

[]

匹配一个指定范围内的字符,如'[Gg]rep'匹配Grep和grep。

[^]

匹配一个不在指定范围内的字符,如:'[^A-FH-Z]rep'匹配不包含A-R和T-Z的一个字母开头,紧跟rep的行。

\(..\)

标记匹配字符,如'\(love\)',love被标记为1。

\<

锚定单词的开始,如:'\\>

锚定单词的结束,如'grep\>'匹配包含以grep结尾的单词的行。

x\{m\}

重复字符x,m次,如:'0\{5\}'匹配包含5个o的行。

x\{m,\}

重复字符x,至少m次,如:'o\{5,\}'匹配至少有5个o的行。

x\{m,n\}

重复字符x,至少m次,不多于n次,如:'o\{5,10\}'匹配5--10个o的行。

\w

匹配文字和数字字符,也就是[A-Za-z0-9],如:'G\w*p'匹配以G后跟零个或多个文字或数字字符,然后是p。

\W

\w的反置形式,匹配一个或多个非单词字符,如点号句号等。

\b

单词锁定符,如: '\bgrepb\'只匹配grep。

3. 用于egrep和 grep -E的元字符扩展集

+

匹配一个或多个先前的字符。如:'[a-z]+able',匹配一个或多个小写字母后跟able的串,如loveable,enable,disable等。

?

匹配零个或多个先前的字符。如:'gr?p'匹配gr后跟一个或没有字符,然后是p的行。

a|b|c

匹配a或b或c。如:grep|sed匹配grep或sed

()

分组符号,如:love(able|rs)ov+匹配loveable或lovers,匹配一个或多个ov。

x{m},x{m,},x{m,n}

作用同x\{m\},x\{m,\},x\{m,n\}

4. POSIX字符类

为了在不同国家的字符编码中保持一至,POSIX(The Portable Operating System Interface)增加了特殊的字符类,如[:alnum:]是A-Za-z0-9的另一个写法。要把它们放到[]号内才能成为正则表达式,如[A- Za-z0-9]或[[: alnum:]]。在linux下的grep除fgrep外,都支持POSIX的字符类。

[:alnum:]

文字数字字符

[:alpha:]

文字字符

[:digit:]

数字字符

[:graph:]

非空字符(非空格、控制字符)

[:lower:]

小写字符

[:cntrl:]

控制字符

[:print:]

非空字符(包括空格)

[:punct:]

标点符号

[:space:]

所有空白字符(新行,空格,制表符)

[:upper:]

大写字符

[:xdigit:]

十六进制数字(0-9,a-f,A-F)

5. Grep命令选项

-?

同时显示匹配行上下的?行,如:grep -2 pattern filename同时显示匹配行的上下2行。

-b,--byte-offset

打印匹配行前面打印该行所在的块号码。

-c,--count

只打印匹配的行数,不显示匹配的内容。

-f File,--file=File

从文件中提取模板。空文件中包含0个模板,所以什么都不匹配。

-h,--no-filename

当搜索多个文件时,不显示匹配文件名前缀。

-i,--ignore-case

忽略大小写差别。

-q,--quiet

取消显示,只返回退出状态。0则表示找到了匹配的行。

-l,--files-with-matches

打印匹配模板的文件清单。

-L,--files-without-match

打印不匹配模板的文件清单。

-n,--line-number

在匹配的行前面打印行号。

-s,--silent

不显示关于不存在或者无法读取文件的错误信息。

-v,--revert-match

反检索,只显示不匹配的行。

-w,--word-regexp

如果被\<和\>引用,就把表达式做为一个单词搜索。

-V,--version

显示软件版本信息。

6. 实例

要用好grep这个工具,其实就是要写好正则表达式,所以这里不对grep的所有功能进行实例讲解,只列几个例子,讲解一个正则表达式的写法。

$ ls -l | grep '^a'

通过管道过滤ls -l输出的内容,只显示以a开头的行。

$ grep 'test' d*

显示所有以d开头的文件中包含test的行。

$ grep 'test' aa bb cc

显示在aa,bb,cc文件中匹配test的行。

$ grep '[a-z]\{5\}' aa

显示所有包含每个字符串至少有5个连续小写字符的字符串的行。

$ grep 'w\(es\)t.*\1' aa

如果west被匹配,则es就被存储到内存中,并标记为1,然后搜索任意个字符(.*),这些字符后面紧跟着另外一个es(\1),找到就显示该行。如果用egrep或grep -E,就不用"\"号进行转义,直接写成'w(es)t.*\1'就可以了。

Labels:

2008-11-02

Duplicating Registers Method



A technique commonly used to increase the speed of a critical path is to duplicate a register to reduce the fan-out of the critical path. Because FPGAs are register-rich, this is usually an advantageous structure since it can often be done at no extra expense to the design.

Example 2
– Verilog Example of Register with 64 Loads
module high_fanout(in, en, clk, out);
input[63:0]in;
inputen, clk;
output[63:0] out;
reg[63:0] out;
regtri_en;
always @(posedge clk) tri_en = en;
always @(tri_en or in) begin
if (tri_en) out = in;
else out = 64'bZ;
end
endmodule



Example 3 – Verilog Example of After Register Duplication to Reduce Fan-out
module low_fanout(in, en, clk, out);
input[63:0] in;
input en, clk;
output[63:0] out;
reg[63:0] out;
regtri_en1, tri_en2;
always @(posedge clk) begin
tri_en1 = en; tri_en2 = en;
end
always @(tri_en1 or in)begin
if (tri_en1) out[63:32] = in[63:32];
else out[63:32] = 32'bZ;
end
always @(tri_en2 or in) begin
if (tri_en2) out[31:0] = in[31:0];
else out[31:0] = 32'bZ;
end
endmodule

Labels: