zoukankan      html  css  js  c++  java
  • vim之高效编辑verilog代码(1)

    1、前言

     记录与回放命令

    这需要三个步骤:
    1. "q{register}" 命令启动一次击键记录,结果保存到 {register} 指定的寄存器中。
       寄存器名可以用 a 到 z 中任一个字母表示。
    2. 输入你的命令。
    3. 键入 q (后面不用跟任何字符) 命令结束记录。
    现在,你可以用 "@{register}" 命令执行这个宏。
    现在看看你可以怎么用这些命令。假设你有如下文件名列表:
            stdio.h 
            fcntl.h 
            unistd.h 
            stdlib.h 
        而你想把它变成这样:
            #include "stdio.h" 
            #include "fcntl.h" 
            #include "unistd.h" 
            #include "stdlib.h" 
    先移动到第一行,接着执行如下命令:
            qa                      启动记录,并使用寄存器 a
            ^                       移到行首
            i#include "<Esc>        在行首输入 #include "
            $                       移到行末
            a"<Esc>                 在行末加上双引号 (")
            j                       移到下一行
            q                       结束记录
    现在,你已经完成一次复杂的修改了。你可以通过重复三次 "@a" 完成余下的修改。
    "@a" 命令可以通过计数前缀修饰,使操作重复指定的次数。在本例中,你可以输入:
            3@a

    2、实例

    在verilog编程中,我们经常遇到这样的情况,下面所示。

    我们要对adder module实例化100个,那么我们通常的做法就是复制99次,然后对每个进行修改。这样的操作也许你并不讨厌,那么你有没有想过还有更快捷的方式呢。下面我们就用vi的记录与回放命令,来实现这个简单的操作。

     

     首先我们在文件中编辑这样的一段代码:

    adder adder0
    (
      .rst(rst),
      .clk(clk),

      .a(a0),
      .b(b0),

      .sum(sum0)
    );

     

     下面我们就要对这段代码复制49遍,实例化50个。

    将光标移动到adder行 

    qx                               启动记录,将记录保存在寄存器x中。x可以是a-z的任意一个字母

    ^                                将光标移动到adder行的第一个非空白字符

    <ctrl+v>                      进入visual block模式

    jjjjjjjjjjj                        下移11行,移动到);下的空白行

    $                                 选中

    y                                 复制

    jjjjjjjjjjj                       下移11行,复制

    /adder\d  <Enter>        寻找adder后为整数的匹配

    <ctrl+a>                      adder后面的数字加1

    /a\d   <Enter>

    /b\d   <Enter>

    /sum\d <Enter>  

    kkkkkkkkk                   移回到adder的行

    q                                记录结束 

     这样的话,这些操作就被保存在了,寄存器x里去了。

    下面只要执行49@x,就可以完成你想完成的结果了。


     我还有一个问题目前没有解决,正在继续寻找答案,若是有那么高手敢于分享自己的经验的,不妨分享一下,在这里全体的网友都会感谢你的!

    问题描述:

    在写verilog的时候我需要有这么几个信号;

    hor_halfpel00 <= 0; hor_halfpel01 <= 0; hor_halfpel02 <= 0; hor_halfpel03 <= 0; hor_halfpel04 <= 0;
    hor_halfpel10 <= 0; hor_halfpel11 <= 0; hor_halfpel12 <= 0; hor_halfpel13 <= 0; hor_halfpel14 <= 0;
    hor_halfpel20 <= 0; hor_halfpel21 <= 0; hor_halfpel22 <= 0; hor_halfpel23 <= 0; hor_halfpel24 <= 0;
    hor_halfpel30 <= 0; hor_halfpel31 <= 0; hor_halfpel32 <= 0; hor_halfpel33 <= 0; hor_halfpel34 <= 0;
    hor_halfpel40 <= 0; hor_halfpel41 <= 0; hor_halfpel42 <= 0; hor_halfpel43 <= 0; hor_halfpel44 <= 0;
    hor_halfpel50 <= 0; hor_halfpel51 <= 0; hor_halfpel52 <= 0; hor_halfpel53 <= 0; hor_halfpel54 <= 0;

     我如何快速的完成他们输入和赋值,谢谢! 

  • 相关阅读:
    Directx
    apr库开发
    linux 上編譯apache
    数字信号处理---FFT
    C# Parallel用法
    C#线程同步--线程通信
    C#线程同步--限量使用
    C#线程安全类型
    C# Task用法
    C# ThreadPool类(线程池)
  • 原文地址:https://www.cnblogs.com/liuokay/p/2037303.html
Copyright © 2011-2022 走看看