找回密码
 立即注册
搜索
查看: 405|回复: 10

一直有个疑问 什么是好的RTL编码方式

[复制链接]

6

主题

109

回帖

345

积分

壮年

积分
345
发表于 2025-3-17 19:41:11 | 显示全部楼层 |阅读模式
一直有个疑问,什么是好的编码方式.  
格式问题, 主流的是把一个文件,分成多个位置, 一个位置是接口描述, 一个位置是变量描述, 一个是组合逻辑描述, 一个是时序逻辑描述, 一个是状态机描述, 一个是例化描述. 这样结果就是我看什么代码都是跳着看, 可能写的人是顺序写的,最后整理成这个鬼样子. 一个非常简单的功能, 也会描述成非常难看懂的样子,来回跳着看. 是否应该让人看的不费劲为目的,还是整齐为目的,半个小时什么都没做,就光对齐格式了. 是否应该用语法机制让人更能容易看懂, 还是用格式来让人感到赏心悦目?

2

主题

2

回帖

28

积分

娃娃

积分
28
发表于 2025-3-18 16:05:44 | 显示全部楼层
好的编码方式其实是多维度的考量,格式规整和易于理解并不矛盾,反而是相辅相成的。主流那种将文件按接口、变量、组合逻辑等分类描述的格式,乍一看确实需要来回跳转阅读,但从长远维护和团队协作角度,意义重大。对于写代码的人,这么做是为了让整个设计结构清晰明了,就像搭积木,每个部分都有其归属,这样无论是自己后续修改,还是别人接手,都能迅速定位到关键代码块。
至于语法机制和格式。花半小时对齐格式,看似浪费时间,实则是在为后续开发和维护节省大量潜在的时间成本。格式赏心悦目不是目的本身,而是为了让开发者在阅读代码时能更顺畅地理解逻辑,减少因格式混乱带来的理解障碍。所以,好的编码方式应该以让人理解不费劲为根本目的,而合理的格式规范正是实现这一目的的有效手段 。

6

主题

109

回帖

345

积分

壮年

积分
345
 楼主| 发表于 2025-3-18 21:17:45 | 显示全部楼层
FPGAer 发表于 2025-3-18 16:05
好的编码方式其实是多维度的考量,格式规整和易于理解并不矛盾,反而是相辅相成的。主流那种将文件按接口、 ...

你没有具体的说明这么做为什么好, 但是我说出了这么做的坏处,毕竟是给人类看的代码. 真让整体清晰明了,那个就是靠模块的划分, 不是整洁的代码就有用.而且整洁这个事情ide工具其实早就可以解决了.把变量和组合逻辑时序逻辑分开,让自己赏心悦目没有用呀,翻着找代码就跟家里看着妈妈收拾很整洁, 想找啥都找不到,全靠猜你的意图.格式规范我感觉更应该考语法机制,比如说sv中的类,包. 而不是弄个很长的名字,摆放的位置.C++工程代码java工程代码复杂度比FPGA高多了,毕竟考虑很多设计通用性,用了模板,也没向fpga非要弄得整齐. 但是人家保持了通用性,但是代码就是看着混乱,但是分到每个函数,每个模板都看的懂. 所以我不明白整那么多虚的做啥,弄得别人看代码思路全靠猜你编码顺序写作意图.

2

主题

10

回帖

100

积分

少年

积分
100
发表于 2025-3-20 10:54:26 | 显示全部楼层
FPGA 开发始终存在一个无法评判的问题,怎么算是好的开发项目?什么样的工程师是好工程师,这个标准太模糊了。包括 RTL 怎么算是好的?
需要像ASIC一样写?状态机必须3段氏?好像都不是,也没有啥共识规范,完全主观意志。

6

主题

109

回帖

345

积分

壮年

积分
345
 楼主| 发表于 2025-3-20 14:38:55 | 显示全部楼层
Shane.F 发表于 2025-3-20 10:54
FPGA 开发始终存在一个无法评判的问题,怎么算是好的开发项目?什么样的工程师是好工程师,这个标准太模糊 ...

主要是现在有一帮人主推自己是大厂写法, 卖的课风生水起, 我感觉首先代码让人能看懂吧, 然后比较重要的是综合后的资源, 时序, 他们什么都不谈. 就是给一个算法的部署方案, 还不是最优的.

0

主题

11

回帖

51

积分

少年

积分
51
发表于 2025-3-21 21:44:27 | 显示全部楼层
大家要不放出自己的编码规范来秀一下?

6

主题

109

回帖

345

积分

壮年

积分
345
 楼主| 发表于 2025-3-22 09:06:51 | 显示全部楼层
电子狐 发表于 2025-3-21 21:44
大家要不放出自己的编码规范来秀一下?

你先发个呗,有个帖子我写的是32bit转24bit,分包拼接的, 你写个我就发个我的哈. 我写的太丑陋了

1

主题

4

回帖

31

积分

娃娃

积分
31
发表于 2025-3-31 13:59:35 | 显示全部楼层
好的编码方式?指编码风格吗?

0

主题

11

回帖

51

积分

少年

积分
51
发表于 2025-4-8 19:35:28 | 显示全部楼层
xxppno1 发表于 2025-3-22 09:06
你先发个呗,有个帖子我写的是32bit转24bit,分包拼接的, 你写个我就发个我的哈. 我写的太丑陋了 ...
  1. `timescale 1ns/1ns
  2. module work_07_state
  3. (               
  4.        
  5.         input            clk           ,         
  6.         input            rst           ,
  7.         input [1:0] state_inputs       ,            //状态输入
  8.         output reg  [3:0] comb_outputs              //状态输出

  9. );

  10.     //variable definition section
  11.     parameter                                  // define state
  12.        s0 = 0,
  13.        s1 = 1,
  14.        s2 = 2,
  15.        s3 = 3,
  16.        s4 = 4;
  17.     reg [3:0]                                  //define register (define intermediate nodes)
  18.         c_st,                                  //current state
  19.             next_state;                            //next state

  20.     //logical section
  21.         always @(posedge clk or negedge rst)           
  22.                         begin                                       
  23.                                 if (!rst)
  24.                                 begin
  25.                                  c_st <= 0;
  26.                                 end

  27.                                 else
  28.                                  c_st <= next_state;                                    
  29.                         end

  30.    
  31.                 always @(c_st or state_inputs)           
  32.                         begin
  33.                             case (c_st)

  34.                                  s0 :   
  35.                                  begin
  36.                                   comb_outputs <= 0;
  37.                                   if (state_inputs == 2'b00)
  38.                                       next_state = s0;
  39.                                   else
  40.                                       next_state = s1;

  41.                                  end

  42.                                  s1 :   
  43.                                  begin
  44.                                   comb_outputs <= 8;
  45.                                   if (state_inputs == 2'b01)
  46.                                       next_state = s1;
  47.                                   else
  48.                                       next_state = s2;
  49.                                                  
  50.                                  end

  51.                                  s2 :   
  52.                                  begin
  53.                                   comb_outputs <= 12;
  54.                                   if (state_inputs == 2'b10)
  55.                                       next_state = s0;
  56.                                   else
  57.                                       next_state = s3;
  58.                                  end

  59.                                 s3  :   
  60.                                  begin
  61.                                   comb_outputs <= 14;
  62.                                   if (state_inputs == 2'b11)
  63.                                       next_state = s3;
  64.                                   else
  65.                                       next_state = s4;
  66.                                                  
  67.                                  end

  68.                                  s4 :   
  69.                                  begin
  70.                                   comb_outputs <= 9;
  71.                                       next_state = s0;
  72.                                                  
  73.                                  end

  74.                                  default : next_state <= s0;

  75.                                 endcase
  76.                                                  
  77.                         end

  78. endmodule
复制代码


其实是我自己写的太丑了,想偷师。。。。

6

主题

109

回帖

345

积分

壮年

积分
345
 楼主| 发表于 2025-4-9 17:15:34 | 显示全部楼层
电子狐 发表于 2025-4-8 19:35
其实是我自己写的太丑了,想偷师。。。。

额 您写的功能不是32bit转24bit呀
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|CrazyFPGA ( 粤ICP备2023025753号 )

GMT+8, 2025-5-2 23:27 , Processed in 0.053788 second(s), 18 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.