当前位置:首页 > > 21ic电子网
[导读] 1、前言 之前在公司负责制定代码规范,费了九牛二虎之力,终于整理出来一份文档。由于保密规定的缘故,无法与大家直接分享这份文档。但是,文档中的大部分规范都是我自己长期总结出来的,在这里也与大家分享一下。2、代码示范为求直观,首先贴上一份示范代码,然后我再进行逐条详细解释。以下代码...

什么是良好的Verilog代码风格?


 1、前 言 


之前在公司负责制定代码规范,费了九牛二虎之力,终于整理出来一份文档。由于保密规定的缘故,无法与大家直接分享这份文档。但是,文档中的大部分规范都是我自己长期总结出来的,在这里也与大家分享一下。


2、代码示范


为求直观,首先贴上一份示范代码,然后我再进行逐条详细解释。以下代码是我之前做的一个同步FIFO模块,代码如下:

001

//======================================================

002

// Copyright (C) 2015 By Kellen.Wang

003

// mail@kellen.wang, All Rights Reserved

004

//======================================================

005

// Module : sync_fifo

006

// Author : Kellen Wang

007

// Contact : kellen.wang124@gmail.com

008

// Date : Jan.17.2015

009

//=======================================================

010

// Description :

011

//========================================================

012

module sync_fifo #(

013

 parameter DEPTH = 32,

014

 parameter DATA_W = 32

015

) (

016

 input wire clk ,

017

 input wire rst_n ,

018

 input wire wreq ,

019

 input wire [DATA_W-1:0] wdata ,

020

 output wire full_flg ,

021

 input wire rreq ,

022

 output wire [DATA_W-1:0] rdata ,

023

 output wire empty_flg

024

);

025

`ifdef DUMMY_SYNC_FIFO

026

assign full_flg = 1'd0;

027

assign rdata = 32'd0;

028

assign empty_flg = 1'd0;

029

`else

030

`include "get_width.inc"

031

//====================================================

032

// Constant Definition :

033

//===================================================

034

localparam DLY = 1'd1;

035

localparam FULL = 1'd1;

036

localparam NOT_FULL = 1'd0;

037

localparam EMPTY = 1'd1;

038

localparam NOT_EMPTY = 1'd0;

039

localparam ADDR_W = get_width(DEPTH-1);

040

//==================================================

041

// Variable Definition :

042

//==================================================

043

reg [ADDR_W-1:0] waddr;

044

reg [ADDR_W-1:0] raddr;

045

wire [ADDR_W-1:0] waddr_nxt;

046

wire [ADDR_W-1:0] raddr_nxt;

047

//==================================================

048

// Logic Design :

049

//==================================================

050

assign waddr_nxt = waddr  1;

051

assign raddr_nxt = raddr  1;

052

assign full_flg = (waddr_nxt == raddr)? FULL : NOT_FULL;

053

assign empty_flg = (waddr == raddr)? EMPTY : NOT_EMPTY;

054

assign iwreq = wreq
21ic电子网

扫描二维码,关注更多精彩内容

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

美国旧金山和中国苏州2026年2月8日 /美通社/ -- 信达生物制药集团(香港联交所股票代码:01801),一家致力于研发、生产和销售肿瘤、自身免疫、代谢、眼科等重大疾病领域创新药物的生物制药公司,宣布与礼来制药达成战...

关键字: COM 代码 创始人 控制

香港2026年2月4日 /美通社/ -- 华钦科技集团(纳斯达克代码:CLPS,以下简称"华钦科技"或"集团")今日宣布其董事会已通过一项集团股份回购计划的决议。该决议声明,当集团股价低于每股2美元时,集团可在公开市场上...

关键字: PS BSP 代码 纳斯达克

香港2025年12月11日 /美通社/ -- 诺亚控股有限公司(Noah Holdings Limited,以下简称"诺亚"或"公司",纽交所代码:NOAH,港交所代码:6686)...

关键字: AI 代码 AN 操作系统

弗吉尼亚州阿什本2025年12月10日 /美通社/ -- 企业技术与创新领域的领先合作伙伴DXC Technology(纽约证券交易所代码:DXC)今日宣布推出AdvisoryX,这是一支旨在帮助企业应对最复杂的战略、运...

关键字: ADVISOR AI TECHNOLOGY 代码

新加坡2025年12月8日 /美通社/ -- 近日,51Talk在线教育集团("51Talk"或"公司")(纽约证券交易所美国股票代码:COE)公布了其截至2025年9月...

关键字: BSP 代码 创始人 新加坡

北京2025年12月2日 /美通社/ -- 亚马逊云科技在2025 re:Invent全球大会上,宣布为Amazon Transform推出全新的Agent功能,以快速推进代码和应用现代化,助力客户更快消除技术债务,将更...

关键字: 亚马逊 代码 TRANSFORM AGENT

苏州2025年11月10日 /美通社/ -- 在11月8日举行的天准科技股份有限公司(股票代码:688003)成立二十周年峰会上,一项承载深远意义的公益计划——"美道基金"正式发布。香港科技大学校董会...

关键字: AI 人工智能 代码 智能化

模块化是一种将复杂系统分解为独立、可管理单元的软件开发方法。在前端开发中,模块化指的是将JavaScript代码、样式、模板等资源组织成独立的功能单元。

关键字: 模块化 代码

香港2025年10月10日 /美通社/ -- 华钦科技集团公司(纳斯达克代码:CLPS,以下简称"华钦科技")今日宣布将于下周五2025年10月17日开盘前发布2025财年下半年及全年财报。 华钦科技集团公司简介 华...

关键字: PS BSP 代码 COM

马耳他弗洛里亚纳2025年9月30日 /美通社/ -- ArriTech今日宣布推出新一代QGen Online软件平台,助力企业无需编码即可构建合规的客户入驻流程,并将AI驱动的KYC(了解你的客户)、KYB(了解你的...

关键字: GEN 代码 ITECH ARRI
关闭