{"id":1124,"date":"2025-12-31T13:35:00","date_gmt":"2025-12-31T04:35:00","guid":{"rendered":"https:\/\/rtlearner.com\/?p=1124"},"modified":"2025-12-22T09:57:22","modified_gmt":"2025-12-22T00:57:22","slug":"verilog-reusable-design","status":"publish","type":"post","link":"https:\/\/rtlearner.com\/en\/verilog-reusable-design\/","title":{"rendered":"[Verilog] Reusable RTL\uc744 \uc704\ud55c Parameter\uc640 Generate \uc815\ubcf5\ud558\uae30"},"content":{"rendered":"\n<p>RTL \uc124\uacc4\ub97c \ud558\ub2e4 \ubcf4\uba74 \ube44\uc2b7\ud55c \uae30\ub2a5\uc744 \ud558\ub294\ub370 \ube44\ud2b8 \ud3ed(Bit Width)\ub9cc \ub2e4\ub974\uac70\ub098, \ud30c\uc774\ud504\ub77c\uc778 \ub2e8\uc218(Depth)\ub9cc \ub2e4\ub978 \ubaa8\ub4c8\uc774 \ud544\uc694\ud560 \ub54c\uac00 \ub9ce\uc2b5\ub2c8\ub2e4.<\/p>\n\n\n\n<p>\uc774\ub54c \uac00\uc7a5 <strong>\ub098\uc05c \uc2b5\uad00<\/strong>\uc740 \uae30\uc874 \ucf54\ub4dc\ub97c \ubcf5\uc0ac\ud574\uc11c \ud30c\uc77c \uc774\ub984\ub9cc \ubc14\uafb8\uace0 \uc22b\uc790\ub9cc \uace0\uce58\ub294 \uac83(Hard-coding)\uc785\ub2c8\ub2e4. \uc774\ub7f0 \ubc29\uc2dd\uc740 \ud504\ub85c\uc81d\ud2b8\uac00 \ucee4\uc9c8\uc218\ub85d \uc720\uc9c0\ubcf4\uc218\ub97c \uc9c0\uc625\uc73c\ub85c \ub9cc\ub4ed\ub2c8\ub2e4. \ud558\ub098\ub97c \uc218\uc815\ud558\uba74 \ubcf5\uc0ac\ud55c 10\uac1c\uc758 \ud30c\uc77c\uc744 \ub2e4 \ucc3e\uc544\uac00\uba70 \uc218\uc815\ud574\uc57c \ud558\uae30 \ub54c\ubb38\uc785\ub2c8\ub2e4.<\/p>\n\n\n\n<p>\uc774\ubc88 \uae00\uc5d0\uc11c\ub294 &#8220;\ucf54\ub4dc\ub97c \uc9dc\ub294 \ucf54\ub4dc&#8221;\ub77c\uace0 \ubd88\ub9ac\ub294 Verilog\uc758 \uac15\ub825\ud55c \uae30\ub2a5, <code>parameter<\/code>\uc640 <code>generate<\/code> \ube14\ub85d\uc744 \ud65c\uc6a9\ud558\uc5ec <strong>\uc7ac\uc0ac\uc6a9 \uac00\ub2a5\ud55c(Reusable) IP<\/strong>\ub97c \uc124\uacc4\ud558\ub294 \ubc29\ubc95\uc744 \uc54c\uc544\ubd05\ub2c8\ub2e4.<\/p>\n\n\n<style>.kb-table-of-content-nav.kb-table-of-content-id1124_303026-86 .kb-table-of-content-wrap{padding-top:var(--global-kb-spacing-sm, 1.5rem);padding-right:var(--global-kb-spacing-sm, 1.5rem);padding-bottom:var(--global-kb-spacing-sm, 1.5rem);padding-left:var(--global-kb-spacing-sm, 1.5rem);box-shadow:0px 0px 14px 0px rgba(0, 0, 0, 0.2);}.kb-table-of-content-nav.kb-table-of-content-id1124_303026-86 .kb-table-of-contents-title-wrap{padding-top:0px;padding-right:0px;padding-bottom:0px;padding-left:0px;}.kb-table-of-content-nav.kb-table-of-content-id1124_303026-86 .kb-table-of-contents-title{font-weight:regular;font-style:normal;}.kb-table-of-content-nav.kb-table-of-content-id1124_303026-86 .kb-table-of-content-wrap .kb-table-of-content-list{font-weight:regular;font-style:normal;margin-top:var(--global-kb-spacing-sm, 1.5rem);margin-right:0px;margin-bottom:0px;margin-left:0px;}@media all and (max-width: 767px){.kb-table-of-content-nav.kb-table-of-content-id1124_303026-86 .kb-table-of-contents-title{font-size:var(--global-kb-font-size-md, 1.25rem);}.kb-table-of-content-nav.kb-table-of-content-id1124_303026-86 .kb-table-of-content-wrap .kb-table-of-content-list{font-size:var(--global-kb-font-size-sm, 0.9rem);}}<\/style>\n\n<style>.kadence-column1124_d18e7e-ff > .kt-inside-inner-col{box-shadow:0px 0px 14px 0px rgba(0, 0, 0, 0.2);}.kadence-column1124_d18e7e-ff > .kt-inside-inner-col,.kadence-column1124_d18e7e-ff > .kt-inside-inner-col:before{border-top-left-radius:0px;border-top-right-radius:0px;border-bottom-right-radius:0px;border-bottom-left-radius:0px;}.kadence-column1124_d18e7e-ff > .kt-inside-inner-col{column-gap:var(--global-kb-gap-sm, 1rem);}.kadence-column1124_d18e7e-ff > .kt-inside-inner-col{flex-direction:column;}.kadence-column1124_d18e7e-ff > .kt-inside-inner-col > .aligncenter{width:100%;}.kadence-column1124_d18e7e-ff > .kt-inside-inner-col:before{opacity:0.3;}.kadence-column1124_d18e7e-ff{position:relative;}@media all and (max-width: 1024px){.kadence-column1124_d18e7e-ff > .kt-inside-inner-col{flex-direction:column;justify-content:center;}}@media all and (max-width: 767px){.kadence-column1124_d18e7e-ff > .kt-inside-inner-col{flex-direction:column;justify-content:center;}}<\/style>\n<div class=\"wp-block-kadence-column kadence-column1124_d18e7e-ff\"><div class=\"kt-inside-inner-col\">\n<p><strong>\uad00\ub828 \uae00<\/strong><\/p>\n\n\n\n<p>\u2705<a href=\"https:\/\/rtlearner.com\/verilog-cdc-metastability\/\">[Verilog] \ube44\ub3d9\uae30 \uc2e0\ud638 \ucc98\ub9ac: CDC\uc640 Metastability<\/a><\/p>\n\n\n\n<p>\u2705<a href=\"https:\/\/rtlearner.com\/rtl-fsm-design\/\">[Verilog] FSM(\uc720\ud55c \uc0c1\ud0dc \uba38\uc2e0) RTL \uc124\uacc4\uc758 \uc815\uc11d<\/a><\/p>\n<\/div><\/div>\n\n\n\n<h2 class=\"wp-block-heading\">1. \uc0c1\uc218\uc758 \uc885\ub958: <code>parameter<\/code> vs <code>`define<\/code> vs <code>localparam<\/code><\/h2>\n\n\n\n<p>\ubcc0\ud558\uc9c0 \uc54a\ub294 \uac12(\uc0c1\uc218)\uc744 \uc815\uc758\ud558\ub294 \ubc29\ubc95\uc740 \uc5ec\ub7ec \uac00\uc9c0\uac00 \uc788\uc9c0\ub9cc, \uc7ac\uc0ac\uc6a9\uc131\uc744 \uc704\ud574\uc11c\ub294 \uc6a9\ub3c4(Scope)\ub97c \uba85\ud655\ud788 \uad6c\ubd84\ud574\uc57c \ud569\ub2c8\ub2e4.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">\u2460 <code>`define<\/code> (Global Macro)<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>\ud2b9\uc9d5:<\/strong> C\uc5b8\uc5b4\uc758 <code>#define<\/code>\uacfc \uac19\uc2b5\ub2c8\ub2e4. \ucef4\ud30c\uc77c \uc2dc\uc810\uc758 \uc804\ucc98\ub9ac(Preprocessor)\uc785\ub2c8\ub2e4.<\/li>\n\n\n\n<li><strong>\ub2e8\uc810:<\/strong> \uc804\uc5ed(Global)\uc73c\ub85c \uc801\uc6a9\ub429\ub2c8\ub2e4. <code>project_A<\/code>\uc5d0\uc11c \uc815\uc758\ud55c \uc774\ub984\uc774 <code>project_B<\/code>\uc640 \uacb9\uce58\uba74 \ucda9\ub3cc\uc774 \ubc1c\uc0dd\ud569\ub2c8\ub2e4.<\/li>\n\n\n\n<li><strong>\uc6a9\ub3c4:<\/strong> \uce69 \uc804\uccb4\uc5d0\uc11c \uacf5\uc720\ud558\ub294 \uc0c1\uc218(\uc608: \uce69 ID, \uae00\ub85c\ubc8c \uc8fc\uc18c\ub9f5)\uc5d0\ub9cc \uc81c\ud55c\uc801\uc73c\ub85c \uc368\uc57c \ud569\ub2c8\ub2e4. \ubaa8\ub4c8 \ub0b4\ubd80 \uc124\uc815\uc6a9\uc73c\ub85c\ub294 <strong>\uc808\ub300 \uae08\uc9c0<\/strong>\uc785\ub2c8\ub2e4.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">\u2461 <code>parameter<\/code> (Interface Constant)<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>\ud2b9\uc9d5:<\/strong> \ubaa8\ub4c8\uc744 <strong>\uc778\uc2a4\ud134\uc2f1(Instantiation) \ud560 \ub54c \uc678\ubd80\uc5d0\uc11c \uac12\uc744 \ubc14\uafc0 \uc218 \uc788\uc2b5\ub2c8\ub2e4.<\/strong><\/li>\n\n\n\n<li><strong>\uc6a9\ub3c4:<\/strong> \uc7ac\uc0ac\uc6a9\uc131\uc758 \ud575\uc2ec\uc785\ub2c8\ub2e4. \ube44\ud2b8 \ud3ed, FIFO \uae4a\uc774 \ub4f1 \ubaa8\ub4c8\uc758 &#8216;\uc131\uaca9&#8217;\uc744 \uc678\ubd80\uc5d0\uc11c \uacb0\uc815\ud560 \ub54c \uc0ac\uc6a9\ud569\ub2c8\ub2e4.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">\u2462 <code>localparam<\/code> (Internal Constant)<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>\ud2b9\uc9d5:<\/strong> \ubaa8\ub4c8 \ub0b4\ubd80\uc5d0\uc11c\ub9cc \uc0ac\uc6a9\ub418\uba70, <strong>\uc678\ubd80\uc5d0\uc11c \ubcc0\uacbd\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4.<\/strong><\/li>\n\n\n\n<li><strong>\uc6a9\ub3c4:<\/strong> <code>parameter<\/code>\ub97c \uae30\ubc18\uc73c\ub85c \uacc4\uc0b0\ub41c 2\ucc28 \uc0c1\uc218(\uc608: State Machine\uc758 \uc0c1\ud0dc \uac12)\ub97c \uc815\uc758\ud560 \ub54c \uc0ac\uc6a9\ud569\ub2c8\ub2e4.<\/li>\n<\/ul>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#2e3440ff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#d8dee9ff;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>\/\/ \uc88b\uc740 \uc608: \ud30c\ub77c\ubbf8\ud130\ub97c \ud1b5\ud55c \uc720\uc5f0\ud55c \uc124\uacc4\nmodule generic_fifo #(\n    parameter DATA_WIDTH = 32,          \/\/ \uc678\ubd80 \uc124\uc815 \uac00\ub2a5\n    parameter FIFO_DEPTH = 1024,        \/\/ \uc678\ubd80 \uc124\uc815 \uac00\ub2a5\n    \/\/ localparam\uc740 parameter\uc5d0 \uc758\ud574 \uc790\ub3d9 \uacc4\uc0b0\ub428 (\uc678\ubd80 \uc218\uc815 \ubd88\uac00)\n    localparam ADDR_WIDTH = $clog2(FIFO_DEPTH) \n) (\n    input wire &#91;DATA_WIDTH-1:0&#93; wdata,\n    ...\n);<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki nord\" style=\"background-color: #2e3440ff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #616E88\">\/\/ \uc88b\uc740 \uc608: \ud30c\ub77c\ubbf8\ud130\ub97c \ud1b5\ud55c \uc720\uc5f0\ud55c \uc124\uacc4<\/span><\/span>\n<span class=\"line\"><span style=\"color: #81A1C1\">module<\/span><span style=\"color: #D8DEE9FF\"> generic_fifo #(<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    <\/span><span style=\"color: #81A1C1\">parameter<\/span><span style=\"color: #D8DEE9FF\"> DATA_WIDTH <\/span><span style=\"color: #81A1C1\">=<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #B48EAD\">32<\/span><span style=\"color: #D8DEE9FF\">,          <\/span><span style=\"color: #616E88\">\/\/ \uc678\ubd80 \uc124\uc815 \uac00\ub2a5<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    <\/span><span style=\"color: #81A1C1\">parameter<\/span><span style=\"color: #D8DEE9FF\"> FIFO_DEPTH <\/span><span style=\"color: #81A1C1\">=<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #B48EAD\">1024<\/span><span style=\"color: #D8DEE9FF\">,        <\/span><span style=\"color: #616E88\">\/\/ \uc678\ubd80 \uc124\uc815 \uac00\ub2a5<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ECEFF4\">    <\/span><span style=\"color: #616E88\">\/\/ localparam\uc740 parameter\uc5d0 \uc758\ud574 \uc790\ub3d9 \uacc4\uc0b0\ub428 (\uc678\ubd80 \uc218\uc815 \ubd88\uac00)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    <\/span><span style=\"color: #81A1C1\">localparam<\/span><span style=\"color: #D8DEE9FF\"> ADDR_WIDTH <\/span><span style=\"color: #81A1C1\">=<\/span><span style=\"color: #D8DEE9FF\"> $clog2(FIFO_DEPTH) <\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">) (<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    <\/span><span style=\"color: #81A1C1\">input<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">wire<\/span><span style=\"color: #D8DEE9FF\"> &#91;DATA_WIDTH<\/span><span style=\"color: #81A1C1\">-<\/span><span style=\"color: #B48EAD\">1<\/span><span style=\"color: #ECEFF4\">:<\/span><span style=\"color: #B48EAD\">0<\/span><span style=\"color: #D8DEE9FF\">&#93; wdata,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    ...<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">);<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<h2 class=\"wp-block-heading\">2. RTL Generate \ubb38: \ud558\ub4dc\uc6e8\uc5b4\ub97c &#8216;\uc0dd\uc131&#8217;\ud558\ub2e4<\/h2>\n\n\n\n<p><code>generate<\/code> \ube14\ub85d\uc740 Elaboration Time (\ud569\uc131 \uc804 \ub2e8\uacc4)\uc5d0 \ucf54\ub4dc\ub97c <strong>\ub3d9\uc801\uc73c\ub85c \uc0dd\uc131<\/strong>\ud558\ub294 \uae30\ub2a5\uc785\ub2c8\ub2e4. \uc18c\ud504\ud2b8\uc6e8\uc5b4\uc758 <code>if<\/code>\ub098 <code>for<\/code>\uc640 \ub2ec\ub9ac, \uc2e4\ud589 \uc911\uc5d0 \ub3c4\ub294 \uac83\uc774 \uc544\ub2c8\ub77c <strong>\ud68c\ub85c\ub97c \ubcf5\uc0ac\ud558\uac70\ub098 \uc9c0\uc6b0\ub294 \uc5ed\ud560<\/strong>\uc744 \ud569\ub2c8\ub2e4.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">\u2460 <code>generate for<\/code>: \ubc18\ubcf5 \uad6c\uc870 \uc0dd\uc131<\/h3>\n\n\n\n<p>\ub611\uac19\uc740 \ud68c\ub85c\ub97c N\uac1c \ubcf5\uc0ac\ud560 \ub54c \uc0ac\uc6a9\ud569\ub2c8\ub2e4. \uc190\uc73c\ub85c 100\uc904 \uc9e4 \ucf54\ub4dc\ub97c 3\uc904\ub85c \uc904\uc5ec\uc90d\ub2c8\ub2e4.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">\u2461 <code>generate if \/ case<\/code>: \uc870\uac74\ubd80 \ud68c\ub85c \uc0dd\uc131<\/h3>\n\n\n\n<p>\ud30c\ub77c\ubbf8\ud130 \uac12\uc5d0 \ub530\ub77c \ud2b9\uc815 \ud68c\ub85c\ub97c \uc544\uc608 \ub123\uac70\ub098 \ube7c\ubc84\ub9b4 \uc218 \uc788\uc2b5\ub2c8\ub2e4. \ubd88\ud544\uc694\ud55c \ub85c\uc9c1\uc744 \ud569\uc131 \ub2e8\uacc4\uc5d0\uc11c \uc81c\uac70\ud558\uc5ec \uba74\uc801(Area)\uc744 \ucd5c\uc801\ud654\ud569\ub2c8\ub2e4.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">3. \uc2e4\uc804 \ud328\ud134 \u2460: N-Stage Pipeline (Generate For)<\/h2>\n\n\n\n<p>\ub370\uc774\ud130\uac00 \uba40\ub9ac \uc774\ub3d9\ud574\uc57c \ud574\uc11c \ud30c\uc774\ud504\ub77c\uc778 \ub808\uc9c0\uc2a4\ud130\ub97c 3\uac1c \ub123\uc5b4\uc57c \ud560 \ub54c\uac00 \uc788\uace0, 5\uac1c \ub123\uc5b4\uc57c \ud560 \ub54c\uac00 \uc788\uc2b5\ub2c8\ub2e4. \uc774\ub97c <code>parameter<\/code>\ub85c \uc870\uc808\ud558\ub294 \ucf54\ub4dc\uc785\ub2c8\ub2e4.<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#2e3440ff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#d8dee9ff;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>module delay_line #(\n    parameter WIDTH = 8,\n    parameter DEPTH = 3  \/\/ \ud30c\uc774\ud504\ub77c\uc778 \ub2e8\uc218\n) (\n    input  wire clk,\n    input  wire &#91;WIDTH-1:0&#93; d_in,\n    output wire &#91;WIDTH-1:0&#93; d_out\n);\n\n    \/\/ 2\ucc28\uc6d0 \ubc30\uc5f4\ub85c \ub808\uc9c0\uc2a4\ud130 \uc120\uc5b8\n    reg &#91;WIDTH-1:0&#93; pipeline &#91;0:DEPTH-1&#93;;\n\n    genvar i; \/\/ generate\uc6a9 \ub8e8\ud504 \ubcc0\uc218 \uc120\uc5b8\n    generate\n        for (i = 0; i &lt; DEPTH; i = i + 1) begin : gen_pipe\n            always @(posedge clk) begin\n                if (i == 0) \n                    pipeline&#91;i&#93; &lt;= d_in;      \/\/ \uccab \ubc88\uc9f8 \uc2a4\ud14c\uc774\uc9c0\n                else \n                    pipeline&#91;i&#93; &lt;= pipeline&#91;i-1&#93;; \/\/ \ub098\uba38\uc9c0 \uc2a4\ud14c\uc774\uc9c0\n            end\n        end\n    endgenerate\n\n    assign d_out = pipeline&#91;DEPTH-1&#93;;\n\nendmodule<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki nord\" style=\"background-color: #2e3440ff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #81A1C1\">module<\/span><span style=\"color: #D8DEE9FF\"> delay_line #(<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    <\/span><span style=\"color: #81A1C1\">parameter<\/span><span style=\"color: #D8DEE9FF\"> WIDTH <\/span><span style=\"color: #81A1C1\">=<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #B48EAD\">8<\/span><span style=\"color: #D8DEE9FF\">,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    <\/span><span style=\"color: #81A1C1\">parameter<\/span><span style=\"color: #D8DEE9FF\"> DEPTH <\/span><span style=\"color: #81A1C1\">=<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #B48EAD\">3<\/span><span style=\"color: #D8DEE9FF\">  <\/span><span style=\"color: #616E88\">\/\/ \ud30c\uc774\ud504\ub77c\uc778 \ub2e8\uc218<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">) (<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    <\/span><span style=\"color: #81A1C1\">input<\/span><span style=\"color: #D8DEE9FF\">  <\/span><span style=\"color: #81A1C1\">wire<\/span><span style=\"color: #D8DEE9FF\"> clk,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    <\/span><span style=\"color: #81A1C1\">input<\/span><span style=\"color: #D8DEE9FF\">  <\/span><span style=\"color: #81A1C1\">wire<\/span><span style=\"color: #D8DEE9FF\"> &#91;WIDTH<\/span><span style=\"color: #81A1C1\">-<\/span><span style=\"color: #B48EAD\">1<\/span><span style=\"color: #ECEFF4\">:<\/span><span style=\"color: #B48EAD\">0<\/span><span style=\"color: #D8DEE9FF\">&#93; d_in,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    <\/span><span style=\"color: #81A1C1\">output<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">wire<\/span><span style=\"color: #D8DEE9FF\"> &#91;WIDTH<\/span><span style=\"color: #81A1C1\">-<\/span><span style=\"color: #B48EAD\">1<\/span><span style=\"color: #ECEFF4\">:<\/span><span style=\"color: #B48EAD\">0<\/span><span style=\"color: #D8DEE9FF\">&#93; d_out<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">);<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #ECEFF4\">    <\/span><span style=\"color: #616E88\">\/\/ 2\ucc28\uc6d0 \ubc30\uc5f4\ub85c \ub808\uc9c0\uc2a4\ud130 \uc120\uc5b8<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    <\/span><span style=\"color: #81A1C1\">reg<\/span><span style=\"color: #D8DEE9FF\"> &#91;WIDTH<\/span><span style=\"color: #81A1C1\">-<\/span><span style=\"color: #B48EAD\">1<\/span><span style=\"color: #ECEFF4\">:<\/span><span style=\"color: #B48EAD\">0<\/span><span style=\"color: #D8DEE9FF\">&#93; pipeline &#91;<\/span><span style=\"color: #B48EAD\">0<\/span><span style=\"color: #D8DEE9FF\">:DEPTH<\/span><span style=\"color: #81A1C1\">-<\/span><span style=\"color: #B48EAD\">1<\/span><span style=\"color: #D8DEE9FF\">&#93;;<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    <\/span><span style=\"color: #81A1C1\">genvar<\/span><span style=\"color: #D8DEE9FF\"> i; <\/span><span style=\"color: #616E88\">\/\/ generate\uc6a9 \ub8e8\ud504 \ubcc0\uc218 \uc120\uc5b8<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    <\/span><span style=\"color: #81A1C1\">generate<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">        <\/span><span style=\"color: #81A1C1\">for<\/span><span style=\"color: #D8DEE9FF\"> (i <\/span><span style=\"color: #81A1C1\">=<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #B48EAD\">0<\/span><span style=\"color: #D8DEE9FF\">; i <\/span><span style=\"color: #81A1C1\">&lt;<\/span><span style=\"color: #D8DEE9FF\"> DEPTH; i <\/span><span style=\"color: #81A1C1\">=<\/span><span style=\"color: #D8DEE9FF\"> i <\/span><span style=\"color: #81A1C1\">+<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #B48EAD\">1<\/span><span style=\"color: #D8DEE9FF\">) <\/span><span style=\"color: #81A1C1\">begin<\/span><span style=\"color: #D8DEE9FF\"> : gen_pipe<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">            <\/span><span style=\"color: #81A1C1\">always<\/span><span style=\"color: #D8DEE9FF\"> @(<\/span><span style=\"color: #81A1C1\">posedge<\/span><span style=\"color: #D8DEE9FF\"> clk) <\/span><span style=\"color: #81A1C1\">begin<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">                <\/span><span style=\"color: #81A1C1\">if<\/span><span style=\"color: #D8DEE9FF\"> (i <\/span><span style=\"color: #81A1C1\">==<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #B48EAD\">0<\/span><span style=\"color: #D8DEE9FF\">) <\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">                    pipeline&#91;i&#93; <\/span><span style=\"color: #81A1C1\">&lt;=<\/span><span style=\"color: #D8DEE9FF\"> d_in;      <\/span><span style=\"color: #616E88\">\/\/ \uccab \ubc88\uc9f8 \uc2a4\ud14c\uc774\uc9c0<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">                <\/span><span style=\"color: #81A1C1\">else<\/span><span style=\"color: #D8DEE9FF\"> <\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">                    pipeline&#91;i&#93; <\/span><span style=\"color: #81A1C1\">&lt;=<\/span><span style=\"color: #D8DEE9FF\"> pipeline&#91;i<\/span><span style=\"color: #81A1C1\">-<\/span><span style=\"color: #B48EAD\">1<\/span><span style=\"color: #D8DEE9FF\">&#93;; <\/span><span style=\"color: #616E88\">\/\/ \ub098\uba38\uc9c0 \uc2a4\ud14c\uc774\uc9c0<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">            <\/span><span style=\"color: #81A1C1\">end<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">        <\/span><span style=\"color: #81A1C1\">end<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    <\/span><span style=\"color: #81A1C1\">endgenerate<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    <\/span><span style=\"color: #81A1C1\">assign<\/span><span style=\"color: #D8DEE9FF\"> d_out <\/span><span style=\"color: #81A1C1\">=<\/span><span style=\"color: #D8DEE9FF\"> pipeline&#91;DEPTH<\/span><span style=\"color: #81A1C1\">-<\/span><span style=\"color: #B48EAD\">1<\/span><span style=\"color: #D8DEE9FF\">&#93;;<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #81A1C1\">endmodule<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>\ud574\uc11d:<\/strong> <code>DEPTH<\/code>\ub97c 5\ub85c \uc124\uc815\ud558\uba74, \ud569\uc131 \ud234\uc740 <code>gen_pipe[0]<\/code> ~ <code>gen_pipe[4]<\/code>\ub77c\ub294 \uc774\ub984\uc73c\ub85c 5\uac1c\uc758 \ub808\uc9c0\uc2a4\ud130 \ube14\ub85d\uc744 \uc790\ub3d9\uc73c\ub85c \ud480\uc5b4\ud5e4\uccd0\uc11c(Unroll) \uad6c\ud604\ud569\ub2c8\ub2e4.<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">4. \uc2e4\uc804 \ud328\ud134 \u2461: Feature Toggle (Generate If)<\/h2>\n\n\n\n<p>IP\ub97c \uc124\uacc4\ud560 \ub54c, \uc5b4\ub5a4 \uace0\uac1d\uc0ac\ub294 <strong>CRC \uccb4\ud06c \uae30\ub2a5<\/strong>\uc744 \uc6d0\ud558\uace0, \uc5b4\ub5a4 \uace0\uac1d\uc0ac\ub294 \uba74\uc801\uc774 \uc791\uc544\uc57c \ud55c\ub2e4\uba70 \ube7c\ub2ec\ub77c\uace0 \ud569\ub2c8\ub2e4. \ucf54\ub4dc\ub97c \ub450 \uac1c \ub9cc\ub4e4 \ud544\uc694 \uc5c6\uc774 <code>generate if<\/code>\ub85c \ud574\uacb0\ud569\ub2c8\ub2e4.<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#2e3440ff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#d8dee9ff;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>module uart_tx #(\n    parameter ENABLE_CRC = 1 \/\/ 1: CRC \ud3ec\ud568, 0: CRC \uc81c\uac70\n) (\n    input wire clk,\n    input wire &#91;7:0&#93; tx_data,\n    output wire tx_out\n);\n\n    wire &#91;7:0&#93; final_data;\n\n    generate\n        if (ENABLE_CRC == 1) begin : gen_crc_logic\n            \/\/ CRC \ubaa8\ub4c8 \uc778\uc2a4\ud134\uc2f1\n            wire &#91;7:0&#93; crc_val;\n            crc_calc u_crc ( .data(tx_data), .crc(crc_val) );\n            \n            \/\/ \ub370\uc774\ud130 \ub4a4\uc5d0 CRC\ub97c \ubd99\uc784 (\uc608\uc2dc)\n            assign final_data = tx_data ^ crc_val; \n        end else begin : gen_no_crc\n            \/\/ CRC \ub85c\uc9c1\uc740 \uc544\uc608 \ud569\uc131\ub418\uc9c0 \uc54a\uc74c (\uba74\uc801 0)\n            assign final_data = tx_data;\n        end\n    endgenerate\n\n    \/\/ ... UART Transmit Logic using final_data ...\n\nendmodule<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki nord\" style=\"background-color: #2e3440ff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #81A1C1\">module<\/span><span style=\"color: #D8DEE9FF\"> uart_tx #(<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    <\/span><span style=\"color: #81A1C1\">parameter<\/span><span style=\"color: #D8DEE9FF\"> ENABLE_CRC <\/span><span style=\"color: #81A1C1\">=<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #B48EAD\">1<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #616E88\">\/\/ 1: CRC \ud3ec\ud568, 0: CRC \uc81c\uac70<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">) (<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    <\/span><span style=\"color: #81A1C1\">input<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">wire<\/span><span style=\"color: #D8DEE9FF\"> clk,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    <\/span><span style=\"color: #81A1C1\">input<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">wire<\/span><span style=\"color: #D8DEE9FF\"> &#91;<\/span><span style=\"color: #B48EAD\">7<\/span><span style=\"color: #ECEFF4\">:<\/span><span style=\"color: #B48EAD\">0<\/span><span style=\"color: #D8DEE9FF\">&#93; tx_data,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    <\/span><span style=\"color: #81A1C1\">output<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">wire<\/span><span style=\"color: #D8DEE9FF\"> tx_out<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">);<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    <\/span><span style=\"color: #81A1C1\">wire<\/span><span style=\"color: #D8DEE9FF\"> &#91;<\/span><span style=\"color: #B48EAD\">7<\/span><span style=\"color: #ECEFF4\">:<\/span><span style=\"color: #B48EAD\">0<\/span><span style=\"color: #D8DEE9FF\">&#93; final_data;<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    <\/span><span style=\"color: #81A1C1\">generate<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">        <\/span><span style=\"color: #81A1C1\">if<\/span><span style=\"color: #D8DEE9FF\"> (ENABLE_CRC <\/span><span style=\"color: #81A1C1\">==<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #B48EAD\">1<\/span><span style=\"color: #D8DEE9FF\">) <\/span><span style=\"color: #81A1C1\">begin<\/span><span style=\"color: #D8DEE9FF\"> : gen_crc_logic<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ECEFF4\">            <\/span><span style=\"color: #616E88\">\/\/ CRC \ubaa8\ub4c8 \uc778\uc2a4\ud134\uc2f1<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">            <\/span><span style=\"color: #81A1C1\">wire<\/span><span style=\"color: #D8DEE9FF\"> &#91;<\/span><span style=\"color: #B48EAD\">7<\/span><span style=\"color: #ECEFF4\">:<\/span><span style=\"color: #B48EAD\">0<\/span><span style=\"color: #D8DEE9FF\">&#93; crc_val;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">            <\/span><span style=\"color: #81A1C1\">crc_calc<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">u_crc<\/span><span style=\"color: #D8DEE9FF\"> ( .data(tx_data), .crc(crc_val) )<\/span><span style=\"color: #81A1C1\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">            <\/span><\/span>\n<span class=\"line\"><span style=\"color: #ECEFF4\">            <\/span><span style=\"color: #616E88\">\/\/ \ub370\uc774\ud130 \ub4a4\uc5d0 CRC\ub97c \ubd99\uc784 (\uc608\uc2dc)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">            <\/span><span style=\"color: #81A1C1\">assign<\/span><span style=\"color: #D8DEE9FF\"> final_data <\/span><span style=\"color: #81A1C1\">=<\/span><span style=\"color: #D8DEE9FF\"> tx_data ^ crc_val; <\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">        <\/span><span style=\"color: #81A1C1\">end<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">else<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">begin<\/span><span style=\"color: #D8DEE9FF\"> : gen_no_crc<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ECEFF4\">            <\/span><span style=\"color: #616E88\">\/\/ CRC \ub85c\uc9c1\uc740 \uc544\uc608 \ud569\uc131\ub418\uc9c0 \uc54a\uc74c (\uba74\uc801 0)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">            <\/span><span style=\"color: #81A1C1\">assign<\/span><span style=\"color: #D8DEE9FF\"> final_data <\/span><span style=\"color: #81A1C1\">=<\/span><span style=\"color: #D8DEE9FF\"> tx_data;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">        <\/span><span style=\"color: #81A1C1\">end<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    <\/span><span style=\"color: #81A1C1\">endgenerate<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #ECEFF4\">    <\/span><span style=\"color: #616E88\">\/\/ ... UART Transmit Logic using final_data ...<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #81A1C1\">endmodule<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>\ud575\uc2ec:<\/strong> <code>ENABLE_CRC<\/code>\uac00 0\uc774\uba74, <code>u_crc<\/code> \ubaa8\ub4c8\uc740 \uc544\uc608 \ub137\ub9ac\uc2a4\ud2b8(Netlist)\uc5d0\uc11c \uc0ac\ub77c\uc9d1\ub2c8\ub2e4. \uac8c\uc774\ud2b8 \uce74\uc6b4\ud2b8(Gate Count)\ub97c \ud6a8\uc728\uc801\uc73c\ub85c \uad00\ub9ac\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4.<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">5. \uafc0\ud301: <code>$clog2<\/code> \uc2dc\uc2a4\ud15c \ud568\uc218 \ud65c\uc6a9<\/h2>\n\n\n\n<p>\ud30c\ub77c\ubbf8\ud130\ud654\ub41c \uc124\uacc4\ub97c \ud560 \ub54c \uac00\uc7a5 \uace8\uce58 \uc544\ud508 \uac83\uc774 <strong>\uc8fc\uc18c \ube44\ud2b8 \ud3ed(Address Width)<\/strong> \uacc4\uc0b0\uc785\ub2c8\ub2e4. \uae4a\uc774\uac00 1024\uba74 10\ube44\ud2b8, 2048\uc774\uba74 11\ube44\ud2b8\uac00 \ud544\uc694\ud569\ub2c8\ub2e4. \uc774\ub97c \uc0ac\ub78c\uc774 \uacc4\uc0b0\ud558\uc9c0 \uc54a\uace0 \uc218\uc2dd\uc73c\ub85c \ucc98\ub9ac\ud574\uc57c \uc9c4\uc815\ud55c \uc790\ub3d9\ud654\uc785\ub2c8\ub2e4.<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#2e3440ff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#d8dee9ff;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>\/\/ Verilog-2005 \uc774\uc0c1 \uc9c0\uc6d0\nparameter DEPTH = 512;\nlocalparam ADDR_WIDTH = $clog2(DEPTH); \/\/ log2(512) = 9 \uc790\ub3d9 \uacc4\uc0b0<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki nord\" style=\"background-color: #2e3440ff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #616E88\">\/\/ Verilog-2005 \uc774\uc0c1 \uc9c0\uc6d0<\/span><\/span>\n<span class=\"line\"><span style=\"color: #81A1C1\">parameter<\/span><span style=\"color: #D8DEE9FF\"> DEPTH <\/span><span style=\"color: #81A1C1\">=<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #B48EAD\">512<\/span><span style=\"color: #D8DEE9FF\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #81A1C1\">localparam<\/span><span style=\"color: #D8DEE9FF\"> ADDR_WIDTH <\/span><span style=\"color: #81A1C1\">=<\/span><span style=\"color: #D8DEE9FF\"> $clog2(DEPTH); <\/span><span style=\"color: #616E88\">\/\/ log2(512) = 9 \uc790\ub3d9 \uacc4\uc0b0<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p><strong>\uc8fc\uc758:<\/strong> Vivado \ub4f1 \ucd5c\uc2e0 \ud234\uc740 \uc798 \uc9c0\uc6d0\ud558\uc9c0\ub9cc, \uc544\uc8fc \uc624\ub798\ub41c \ub808\uac70\uc2dc \ud234\uc5d0\uc11c\ub294 \uc9c0\uc6d0\ud558\uc9c0 \uc54a\uc744 \uc218 \uc788\uc73c\ub2c8 \ud655\uc778\uc774 \ud544\uc694\ud569\ub2c8\ub2e4.<\/p>\n<\/blockquote>\n\n\n\n<h2 class=\"wp-block-heading\">6. \uacb0\ub860: \uac8c\uc73c\ub978 \uc5d4\uc9c0\ub2c8\uc5b4\uac00 \ud6cc\ub96d\ud55c \uc5d4\uc9c0\ub2c8\uc5b4\ub2e4<\/h2>\n\n\n\n<p>\ud6cc\ub96d\ud55c RTL \uc5d4\uc9c0\ub2c8\uc5b4\ub294 &#8216;\uac8c\uc73c\ub985\ub2c8\ub2e4&#8217;. \ub611\uac19\uc740 \ucf54\ub4dc\ub97c \ub450 \ubc88 \uc9dc\uae30 \uc2eb\uc5b4\uc11c, \ucc98\uc74c \uc9e4 \ub54c \uc870\uae08 \uace0\uc0dd\ud558\ub354\ub77c\ub3c4 \uc644\ubcbd\ud558\uac8c \ud30c\ub77c\ubbf8\ud130\ud654\ub41c(Parameterized) \ubaa8\ub4c8\uc744 \ub9cc\ub4ed\ub2c8\ub2e4.<\/p>\n\n\n\n<ol start=\"1\" class=\"wp-block-list\">\n<li><code>parameter<\/code>\ub85c \ubaa8\ub4c8\uc758 \ud06c\uae30\uc640 \uae4a\uc774\ub97c \uc720\uc5f0\ud558\uac8c \ub9cc\ub4ed\ub2c8\ub2e4.<\/li>\n\n\n\n<li><code>generate for<\/code>\ub85c \ubc18\ubcf5\ub418\ub294 \ub178\uac00\ub2e4 \ucf54\ub529\uc744 \uc790\ub3d9\ud654\ud569\ub2c8\ub2e4.<\/li>\n\n\n\n<li><code>generate if<\/code>\ub85c \ud544\uc694 \uc5c6\ub294 \ub85c\uc9c1\uc744 \uae54\ub054\ud558\uac8c \uc81c\uac70\ud569\ub2c8\ub2e4.<\/li>\n<\/ol>\n\n\n\n<p>\uc774\ub807\uac8c \ub9cc\ub4e0 \ubaa8\ub4c8\uc740 \ud504\ub85c\uc81d\ud2b8 A\uc5d0\uc11c \uc4f0\uace0, \ud504\ub85c\uc81d\ud2b8 B\uc5d0\uc11c\ub3c4 \uc4f0\uace0, 10\ub144 \ub4a4\uc5d0\ub3c4 \uc4f8 \uc218 \uc788\ub294 \uc5ec\ub7ec\ubd84\ub9cc\uc758 \uac15\ub825\ud55c \uc790\uc0b0\uc774 \ub420 \uac83\uc785\ub2c8\ub2e4.<\/p>\n\n\n<style>.kadence-column1124_6cd7fa-af > .kt-inside-inner-col{box-shadow:0px 0px 14px 0px rgba(0, 0, 0, 0.2);}.kadence-column1124_6cd7fa-af > .kt-inside-inner-col,.kadence-column1124_6cd7fa-af > .kt-inside-inner-col:before{border-top-left-radius:0px;border-top-right-radius:0px;border-bottom-right-radius:0px;border-bottom-left-radius:0px;}.kadence-column1124_6cd7fa-af > .kt-inside-inner-col{column-gap:var(--global-kb-gap-sm, 1rem);}.kadence-column1124_6cd7fa-af > .kt-inside-inner-col{flex-direction:column;}.kadence-column1124_6cd7fa-af > .kt-inside-inner-col > .aligncenter{width:100%;}.kadence-column1124_6cd7fa-af > .kt-inside-inner-col:before{opacity:0.3;}.kadence-column1124_6cd7fa-af{position:relative;}@media all and (max-width: 1024px){.kadence-column1124_6cd7fa-af > .kt-inside-inner-col{flex-direction:column;justify-content:center;}}@media all and (max-width: 767px){.kadence-column1124_6cd7fa-af > .kt-inside-inner-col{flex-direction:column;justify-content:center;}}<\/style>\n<div class=\"wp-block-kadence-column kadence-column1124_6cd7fa-af\"><div class=\"kt-inside-inner-col\">\n<p><strong>\uad00\ub828 \uae00<\/strong><\/p>\n\n\n\n<p>\u2705<a href=\"https:\/\/rtlearner.com\/verilog-cdc-metastability\/\">[Verilog] \ube44\ub3d9\uae30 \uc2e0\ud638 \ucc98\ub9ac: CDC\uc640 Metastability<\/a><\/p>\n\n\n\n<p>\u2705<a href=\"https:\/\/rtlearner.com\/rtl-fsm-design\/\">[Verilog] FSM(\uc720\ud55c \uc0c1\ud0dc \uba38\uc2e0) RTL \uc124\uacc4\uc758 \uc815\uc11d<\/a><\/p>\n<\/div><\/div>\n\n\n\n<p>\ucc38\uace0: <a href=\"https:\/\/www.chipverify.com\/verilog\/verilog-generate-block\" target=\"_blank\" rel=\"noopener\">chipverify<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>When designing RTL, there are many times when you need modules that perform similar functions but differ only in bit width or pipeline depth.<\/p>","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_kadence_starter_templates_imported_post":false,"_kad_post_transparent":"","_kad_post_title":"","_kad_post_layout":"","_kad_post_sidebar_id":"","_kad_post_content_style":"","_kad_post_vertical_padding":"","_kad_post_feature":"","_kad_post_feature_position":"","_kad_post_header":false,"_kad_post_footer":false,"_kad_post_classname":"","footnotes":""},"categories":[39],"tags":[40,107],"class_list":["post-1124","post","type-post","status-publish","format-standard","hentry","category-verilog","tag-verilog","tag-rtl"],"_links":{"self":[{"href":"https:\/\/rtlearner.com\/en\/wp-json\/wp\/v2\/posts\/1124","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/rtlearner.com\/en\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/rtlearner.com\/en\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/rtlearner.com\/en\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/rtlearner.com\/en\/wp-json\/wp\/v2\/comments?post=1124"}],"version-history":[{"count":2,"href":"https:\/\/rtlearner.com\/en\/wp-json\/wp\/v2\/posts\/1124\/revisions"}],"predecessor-version":[{"id":1137,"href":"https:\/\/rtlearner.com\/en\/wp-json\/wp\/v2\/posts\/1124\/revisions\/1137"}],"wp:attachment":[{"href":"https:\/\/rtlearner.com\/en\/wp-json\/wp\/v2\/media?parent=1124"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/rtlearner.com\/en\/wp-json\/wp\/v2\/categories?post=1124"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/rtlearner.com\/en\/wp-json\/wp\/v2\/tags?post=1124"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}<!-- This website is optimized by Airlift. Learn more: https://airlift.net. Template:. Learn more: https://airlift.net. Template: 69b92da9d36f73cd2808d6e8. Config Timestamp: 2026-03-17 10:32:09 UTC, Cached Timestamp: 2026-05-16 07:58:36 UTC -->