模块(module)是Verilog的基本描述单位,用于描述某个设计的功能或结构及与其他模块通信的外部端口。
模块内容是嵌在module和endmodule两个语句之间。每个模块实现特定的功能,模块可进行层次的嵌套,因此可以将大型的数字电路设计分割成大小不一的小模块来实现特定的功能,最后通过由顶层模块调用子模块来实现整体功能,这就是Top-Down的设计思想。
将复杂的大问题分解为相对简单的小问题,找出每个问题的关键、重点所在,然后用精确的思维定性、定量地去描述问题。其核心本质是"分解"。
之所以称这样的算法为自顶向下是由于分析树隐含的编号是一个前序编号,而且其顺序是由根到叶自顶向下的分析程序有两类:回溯分析程序(backtracking parser)和预测分析程序(predictive parser)。预测分析程序试图利用一个或多个先行记号来预测出输入串中的下一个构造,而回溯分析程序则试着分析其他可能的输入,当一种可能失败时就要求输入中备份任意数量的字符。虽然回溯分析程序比预测分析程序强大许多,但它们都非常慢,一般都在指数的数量级上,所以对于实际的编译器并不合适。
递归下降程序分析和LL(1)分析一般地都要求计算先行集合,它们分别称作First集合和Follow集合。由于无需显式地构造出这些集合就可以构造出简单的自顶向下的分析程序。
自顶向下的设计方法使系统被分解为各个模块的集合之后,可以对设计的每个独立模块指派不同的工作小组,这些小组可以工作在不同的地点,甚至可以分属不同的单位,最后将不同的模块集成为最终的系统模型,并对其进行综合测试和评价。
自下而上设计法是比较传统的方法。在自下而上设计中,先生成零件并将之插入装配体,然后根据设计要求配合零件。使用以前生成的不在线的零件时,自下而上的设计方案是首选的方法。
自下而上设计法的另一个优点是因为零部件是独立设计的,与自上而下设计法相比,它们的相互关系及重建行为更为简单。使用自下而上设计法可以专注于单个零件的设计工作。当需要建立控制零件大小和尺寸的参考关系时(相对于其它零件),则此方法较为适用。
对要完成的任务进行分解,先对最高层次中的问题进行定义、设计、编程和测试,而将其中未解决的问题作为一个子任务放到下一层次中去解决。这样逐层、逐个地进行定义、设计、编程和测试,直到所有层次上的问题均由实用程序来解决,就能设计出具有层次结构的程序。 按自顶向下的方法设计时,设计师首先对所设计的系统要有一个全面的理解.然后从顶层开始,连续地逐层向下分解,起到系统的所有模块都小到便于掌握为止。
自上而下设计法从装配体中开始设计工作,这是两种设计方法的不同之处。使用一个零件的几何体来帮助定义另一个零件,或生成组装零件后才添加的加工特征,将布局草图作为设计的开端,定义固定的零件位置、基准面等,然后参考这些定义来设计零件。
例如,将一个零件插入到装配体中,然后根据此零件生成一个夹具。使用自上而下设计法在关联中生成夹具,这样可参考模型的几何体,通过与原零件建立几何关系来控制夹具的尺寸。如果改变了零件的尺寸,夹具会自动更新。