ModelSim使用小记

平台:ModelSim 10.4 SE


已经很久没有写Verliog代码了,最近一个老师傅有一块测试板,帮忙写了一点CPLD的控制代码,完成后开始进行前仿,发现好久没用已经开始手生了


P1. 快速入门

  • 新建Project
    根据需要调整Project Name,DefaultLibrary Name和Project Location;
  • 添加被测代码及TB文件
    Add Existing File
  • 编译代码
    Compile
  • 运行仿真
    simulate –> start simulate 选择tb文件后需要optimization的勾选
  • 选择测试节点
    选择TB文件后右键Add –>To Ware —>All items in region
  • 运行仿真
    调整仿真时间后Run

P2. 设置小技巧

  • 关联第三方文本编译工具eg:GVIM
    依次输入以下代码,”****.exe”为需关联的工具的路径地址,根据各自系统进行修改,Tips:注意斜杠的方向
proc external_editor {filename linenumber} { exec "I:/notepad++/notepad++.exe"  $filename }
set PrefSource(altEditor) external_editor

恢复内置编译器可以输入

unset PrefSource(altEditor)

WIN平台安装GVIM并启用VUNDLE管理插件

平台:WIN7
软件:GVIM8.1


最近经常开始PC工作并进行FPGA的开发工作,这些IDE在windows平台的运行良好(linux平台都是老机器了),工作网是内网与外网物理隔绝,就得想办法手动编辑插件
1. 安装GVIM8.1(直接google官方下载)
2. 安装python-2.7 (直接google官方下载)vim8.1版本适配的是python2.7不要下载高版本
3. 拷贝ctags58内的ctags.exe文件至gvim安装目录,例如:C:\Program Files (x86)\Vim\vim81\
4. 拷贝.vim文件和_vimrc文件至$HOME文件夹($HOME变量在我的电脑-高级系统设置-环境变量)PS:vimrc为个人配置文件,拷贝.vim主要为了应对断网,如有网络拷贝vimrc文件,打开vim运行PluginInstall
5. 拷贝字体文件yahei ***.ttf至系统字体文件夹


PS:特别注意vim和python的安装顺讯一定是先gvim再python,最后重启。
最后添加一个百度云盘分享,里面有所有需要的文件。
链接:https://pan.baidu.com/s/1D5PaISL-pPLy1VGPaH-GaQ
提取码:dmw3

terminal中使用Matlab

最近想在终端中直接使用matlab,提高下工作效率
系统:Macos10.12
Matlab:2015b


1.首先要确定termianl是否关联matlab(若直接输入matlab能打开,则关联成功)

export PATH=$PATH:/Applications/MATLAB_R2015b.app/bin/    
#添加的~/.zshrc中(bash在bashrc)

2.配置别名

关联完成之后,直接输入matlab是打开matlab的ui界面,想直接使用,需要加入命令,可设置别名,方便使用

alias matlab='matlab -nosplash -nodesktop -r "cd $PWD"'  
#这样就可以打开matlab同时进行当前目录

3.Matlab命令行常用命令

clc     #清屏
Ctrl+c  #中断程序
ls      #列出文件
open    #打开文件
exit    #退出matlab

Tips:
可以配合Vim的外部命令直接执行shell指令,更加流畅。

Mac平台下在tmux和vim中使用系统剪切板

大家知道在linux平台下,vim中进行系统不同窗口中复制粘贴的时候可以跳用+寄存器来使用,但是mac平台下没有这个寄存器,最简单的方案是使用MacVim。更好的方案当然是使用pbcopy命令和pbpaste命令来代替+寄存器,这样可以可以在终端中直接使用系统剪切板。


1.在tmux中使用pbcopy和pbpaste命令

在OS中tmux是没有权限调用系统操作命令的,那么为了在tmux中使用该命令,我们需要一个包装程序来突破该限制
大家可以在Git上搜索的项目ChrisJohnsen/tmux-MacOSX-pasteboard.

  • 安装
brew install reattach-to-user-namespace "最简单的安装方式就是直接用brew安装
  • 配置tmux.conf
set-option -g default-command "reattach-to-user-namespace -l zsh"
  • 在tmux中输入一下命令就可以将tmux寄存器中的内容传输至系统剪切板
tmux show-buffer | pbcopy

2.VIM中使用系统剪切板

  • 在vimrc中输入以下指令

PS:在tmux中使用pbcopy可以使用zsh的alias功能缩写命令代码,方便使用

VIM复制到MAC系统剪切板

系统:mac 10.12.2
vim:7.4


最近在mac平台内使用vim的时候发现vim和mac的系统剪切板之间不能直接使用,每次都要切换到macvim下再command+c才行。linux平台下面,vim直接拷贝址+寄存器就可以了,mac里面没有+寄存器,后来发现mac平台里面有pbcopy、pbpaste命令可以使用。在vim下增加一下命令:

map <F7> :.w !pbcopy<CR><CR>
map <F8> :r !pbpaste<CR>

VIM自动添加文件头信息

以前买次写代码的头信息的时候都是自己写,这样太不geek了,决定使用vim编辑器自动添加头信息


在vimrc中添加以下信息

"SET Comment START
autocmd BufNewFile *.php,*.js,*.cpp,*.c,*.v,*.sv,*.m,*.sh exec ":call SetComment()" |normal 10Go

func SetComment()
    if expand("%:e") == 'php'
        call setline(1, '<?php')
    elseif expand("%:e") == 'js'
        call setline(1, '//javaScript file')
    elseif expand("%:e") == 'cpp'|| expand("%:e") == 'c'
        call setline(1, '//c++ file')
    elseif expand("%:e") == 'v' || expand("%:e") == 'sv'
        call setline(1, '//verliog file')
    elseif expand("%:e") == 'm'
        call setline(1, '%%matlab file')
    elseif expand("%:e") == 'sh'
        call setline(1, '##bash file')
    endif
    if expand("%:e") == 'm'
        call append(1, '%**************************************************')
        call append(2, '%')
        call append(3, '%       Filename: '.expand("%"))
        call append(4, '%')
        call append(5, '%         Author: Ethan - Ehtan@abbswim.com')
        call append(6, '%    Description: ---')
        call append(7, '%         Create: '.strftime("%Y-%m-%d %H:%M:%S"))
        call append(8, '%  Last Modified: '.strftime("%Y-%m-%d %H:%M:%S"))
        call append(9, '%**************************************************')
    elseif expand("%:e") == 'sh'
        call append(1, '#**************************************************')
        call append(2, '#')
        call append(3, '#       Filename: '.expand("%"))
        call append(4, '#')
        call append(5, '#         Author: Ethan - Ehtan@abbswim.com')
        call append(6, '#    Description: ---')
        call append(7, '#         Create: '.strftime("%Y-%m-%d %H:%M:%S"))
        call append(8, '#  Last Modified: '.strftime("%Y-%m-%d %H:%M:%S"))
        call append(9, '#**************************************************')
    else
        call append(1, '/**************************************************')
        call append(2, '*')
        call append(3, '*       Filename: '.expand("%"))
        call append(4, '*')
        call append(5, '*         Author: Ethan - Ehtan@abbswim.com')
        call append(6, '*    Description: ---')
        call append(7, '*         Create: '.strftime("%Y-%m-%d %H:%M:%S"))
        call append(8, '*  Last Modified: '.strftime("%Y-%m-%d %H:%M:%S"))
        call append(9, '**************************************************/')
    endif
endfunc

map <F5> :call SetComment()<CR>:10<CR>o
"Set Comment END

"SET Last Modified Time START
func DataInsert()
    call cursor(9,1)
    if search ('Last Modified') != 0
        let line = line('.')
        if expand("%:e") == 'm'
            call setline(line, '%  Last Modified: '.strftime("%Y-%m-%d %H:%M:%S"))
        elseif expand("%:e") == 'sh'
            call setline(line, '#  Last Modified: '.strftime("%Y-%m-%d %H:%M:%S"))
        else
            call setline(line, '*  Last Modified: '.strftime("%Y-%m-%d %H:%M:%S"))

    endif
endfunc

autocmd FileWritePre,BufWritePre *.php,*.js,*.cpp,*.c,*.v,*.sv,*.m,*.sh ks|call DataInsert() |'s
"SET Last Modified Time END

代码的第一段是在文件打开的同时自动添加注释信息,由于m文件和bash文件的注释比较特殊所以重新列了一堆,水平有限没想到什么好的优化代码的方法,希望有大神可以指点。第二段代码是更新修改时间。

VIM中消除^M回车符的方法

macbook自从更新了10.12sierra之后我的matlab2015变得不支持中文了,决定使用VIM来作为m文件的编辑器
在安装vim的matlab语法高亮插件过程中,发现报错提示换行符为^M,详细的原因就不说了,网上很多。


通过搜索,发现很多人分享的方法是:

:%s/^M$//g # 去掉行尾的^M。

还有其他一些类似的基本大同小异,但是试过之后全部失败,但是使用下面的方法成功了。

:set fileformat=unix "在VIM命令模式中输入前面代码,将文本格式选择为UNIX,之后保存退出,报错就消失
tips:
1.显示换行符,制表符等
:set list
2.检测文件格式
:set fileformat?
3.将UNIX格式作为第一选项,DOS格式作为第二选项
:set filformat=unix,dos

Vim插件delimitMate

delimitMate是一款用于界定符号的自动补全插件,会自动补全引号、方括号、圆括号等。


  • 安装及使用
    安装vundel的只需要在vimrc中插入以下代码即可进行安装,一旦安装成功无需进行任何配置就可以使用
Plugin `Raimondi/delimitMate`

Vim插件Tabular

Tabular是一款用于在vim中对齐 ‘=’ , ‘:’ , ‘|’ 等符号的插件,对于程序猿来说是非常实用的一款插件。


安装

如果有vim插件管理器vundle的话可以直接在vimrc文件中输入以下代码

Plugin 'godlygeek/tabular'

使用

例如:如果我想让代码按‘等号’对齐,我们就需要讲光标移动到有等号的那一行,然后输入

:Tab /=

对齐其他符号也是类似如

:Tab /:
:Tab /|
:Tab /(