VHDL optimizationVHDL: integers for synthesis?Which synthesis tools support VHDL libraries?vhdl synthesis optimization: counters in statemachinesVHDL: when is process sensitivity list triggered?Need optimization adviceloop synthesis vhdlVHDL: how do you perform asynchronous data transfer between entities?VHDL Flip Flop Syntax ErrorWhile loop in VHDLvhdl synthesizable code

Atmospheric methane to carbon

Best model for precedence constraints within scheduling problem

Check disk usage of files returned with spaces

Is there a way to make the "o" keypress of other-window <C-x><C-o> repeatable?

Which basis does the wavefunction collapse to?

Vegetarian dishes on Russian trains (European part)

Linear and Integer programming materials

Can 'in-' mean both 'in' and 'no'?

Why don't modern jet engines use forced exhaust mixing?

Testing control surfaces pre flight; what feedback does pilot recieve?

How to render "have ideas above his station" into German

My new Acer Aspire 7 doesn't have a Legacy Boot option, what can I do to get it?

Virtual destructor moves object out of rodata section

Why is su world executable?

Spongy green glass found on graves

Eric Andre had a dream

Why do balloons get cold when they deflate?

How to add a table description to a longtable?

Do banks' profitability really suffer under low interest rates

Unsolved Problems due to Lack of Computational Power

Do predators tend to have vertical slit pupils versus horizontal for prey animals?

!I!n!s!e!r!t! !b!e!t!w!e!e!n!

Nicely-spaced multiple choice options

Can I check a small array of bools in one go?



VHDL optimization


VHDL: integers for synthesis?Which synthesis tools support VHDL libraries?vhdl synthesis optimization: counters in statemachinesVHDL: when is process sensitivity list triggered?Need optimization adviceloop synthesis vhdlVHDL: how do you perform asynchronous data transfer between entities?VHDL Flip Flop Syntax ErrorWhile loop in VHDLvhdl synthesizable code






.everyoneloves__top-leaderboard:empty,.everyoneloves__mid-leaderboard:empty,.everyoneloves__bot-mid-leaderboard:empty margin-bottom:0;








4












$begingroup$


If I need to perform the same function on a number of different signals in a VHDL design will placing them in a vector affect synthesis optimization in any way?



As as example, let's say I'm trying to simulate a real-world circuit that's built up from TTL chips. A 7402 Quad 2-Input NOR chip, for example, can have the logic for each gate specified explicitly:



entity dm7402 is
port(
a0, a1, a2, a3,
b0, b1, b2, b3: in std_logic := '0';
y0, y1, y2, y3: out std_logic
);
end dm7402;

architecture behavior OF dm7402 IS
begin
y0 <= a0 nor b0;
y1 <= a1 nor b1;
y2 <= a2 nor b2;
y3 <= a3 nor b3;
end architecture;


Alternatively I can use a vector:



entity dm7402 is
port(
a, b : in std_logic_vector(3 downto 0) := "0000";
y : out std_logic_vector(3 downto 0)
);
end dm7402;

architecture behavior OF dm7402 IS
begin
y <= a nor b;
end architecture;


Intuitively I would guess that the first case could result in a faster design by giving the synthesizer the freedom to move gates around so as to optimize routing, whereas the second might result in using less resources. Is that a fair assumption to make?



(BTW I do realize that in a real-world situation I wouldn't actually be explicitly designing with TTL logic like this, but just humor me).










share|improve this question









$endgroup$




















    4












    $begingroup$


    If I need to perform the same function on a number of different signals in a VHDL design will placing them in a vector affect synthesis optimization in any way?



    As as example, let's say I'm trying to simulate a real-world circuit that's built up from TTL chips. A 7402 Quad 2-Input NOR chip, for example, can have the logic for each gate specified explicitly:



    entity dm7402 is
    port(
    a0, a1, a2, a3,
    b0, b1, b2, b3: in std_logic := '0';
    y0, y1, y2, y3: out std_logic
    );
    end dm7402;

    architecture behavior OF dm7402 IS
    begin
    y0 <= a0 nor b0;
    y1 <= a1 nor b1;
    y2 <= a2 nor b2;
    y3 <= a3 nor b3;
    end architecture;


    Alternatively I can use a vector:



    entity dm7402 is
    port(
    a, b : in std_logic_vector(3 downto 0) := "0000";
    y : out std_logic_vector(3 downto 0)
    );
    end dm7402;

    architecture behavior OF dm7402 IS
    begin
    y <= a nor b;
    end architecture;


    Intuitively I would guess that the first case could result in a faster design by giving the synthesizer the freedom to move gates around so as to optimize routing, whereas the second might result in using less resources. Is that a fair assumption to make?



    (BTW I do realize that in a real-world situation I wouldn't actually be explicitly designing with TTL logic like this, but just humor me).










    share|improve this question









    $endgroup$
















      4












      4








      4





      $begingroup$


      If I need to perform the same function on a number of different signals in a VHDL design will placing them in a vector affect synthesis optimization in any way?



      As as example, let's say I'm trying to simulate a real-world circuit that's built up from TTL chips. A 7402 Quad 2-Input NOR chip, for example, can have the logic for each gate specified explicitly:



      entity dm7402 is
      port(
      a0, a1, a2, a3,
      b0, b1, b2, b3: in std_logic := '0';
      y0, y1, y2, y3: out std_logic
      );
      end dm7402;

      architecture behavior OF dm7402 IS
      begin
      y0 <= a0 nor b0;
      y1 <= a1 nor b1;
      y2 <= a2 nor b2;
      y3 <= a3 nor b3;
      end architecture;


      Alternatively I can use a vector:



      entity dm7402 is
      port(
      a, b : in std_logic_vector(3 downto 0) := "0000";
      y : out std_logic_vector(3 downto 0)
      );
      end dm7402;

      architecture behavior OF dm7402 IS
      begin
      y <= a nor b;
      end architecture;


      Intuitively I would guess that the first case could result in a faster design by giving the synthesizer the freedom to move gates around so as to optimize routing, whereas the second might result in using less resources. Is that a fair assumption to make?



      (BTW I do realize that in a real-world situation I wouldn't actually be explicitly designing with TTL logic like this, but just humor me).










      share|improve this question









      $endgroup$




      If I need to perform the same function on a number of different signals in a VHDL design will placing them in a vector affect synthesis optimization in any way?



      As as example, let's say I'm trying to simulate a real-world circuit that's built up from TTL chips. A 7402 Quad 2-Input NOR chip, for example, can have the logic for each gate specified explicitly:



      entity dm7402 is
      port(
      a0, a1, a2, a3,
      b0, b1, b2, b3: in std_logic := '0';
      y0, y1, y2, y3: out std_logic
      );
      end dm7402;

      architecture behavior OF dm7402 IS
      begin
      y0 <= a0 nor b0;
      y1 <= a1 nor b1;
      y2 <= a2 nor b2;
      y3 <= a3 nor b3;
      end architecture;


      Alternatively I can use a vector:



      entity dm7402 is
      port(
      a, b : in std_logic_vector(3 downto 0) := "0000";
      y : out std_logic_vector(3 downto 0)
      );
      end dm7402;

      architecture behavior OF dm7402 IS
      begin
      y <= a nor b;
      end architecture;


      Intuitively I would guess that the first case could result in a faster design by giving the synthesizer the freedom to move gates around so as to optimize routing, whereas the second might result in using less resources. Is that a fair assumption to make?



      (BTW I do realize that in a real-world situation I wouldn't actually be explicitly designing with TTL logic like this, but just humor me).







      vhdl synthesis






      share|improve this question













      share|improve this question











      share|improve this question




      share|improve this question










      asked Aug 6 at 11:38









      Mark FeldmanMark Feldman

      1454 bronze badges




      1454 bronze badges























          2 Answers
          2






          active

          oldest

          votes


















          5












          $begingroup$

          My guess is that there will be no difference. However, the results will depend greatly on the specific tool set you use as well as the target architecture (FPGA? ASIC?).



          By the time the tools get to the placement and routing steps they have long forgotten what your RTL looked like. In fact, the gates themselves may have been optimized away or the logic function could be modified in such a way that there is no gate in the final design corresponding to your NOR gates...this is almost guaranteed to be the case in an FPGA.






          share|improve this answer









          $endgroup$














          • $begingroup$
            Thanks guys, both very good answers.
            $endgroup$
            – Mark Feldman
            Aug 7 at 0:13


















          4












          $begingroup$

          It does not make a difference.

          Synthesis tools are very, very good at optimizing.



          As to "speed" versus "area": every synthesis tool I know has settings where you can choose which one you prefer. Normally the tools will optimize until it meets the timing constraints and then stop. Which means you get the smallest design which still meets timing.



          The only time your gates are not "moved around" is if you explicitly tell the synthesis tool to not do that. It falls under the category where you tell the tool not to optimize across module boundaries. (e.g. 'no flattening' or 'flattening off' or a tick box with some 'keep boundaries' option.






          share|improve this answer









          $endgroup$

















            Your Answer






            StackExchange.ifUsing("editor", function ()
            return StackExchange.using("schematics", function ()
            StackExchange.schematics.init();
            );
            , "cicuitlab");

            StackExchange.ready(function()
            var channelOptions =
            tags: "".split(" "),
            id: "135"
            ;
            initTagRenderer("".split(" "), "".split(" "), channelOptions);

            StackExchange.using("externalEditor", function()
            // Have to fire editor after snippets, if snippets enabled
            if (StackExchange.settings.snippets.snippetsEnabled)
            StackExchange.using("snippets", function()
            createEditor();
            );

            else
            createEditor();

            );

            function createEditor()
            StackExchange.prepareEditor(
            heartbeatType: 'answer',
            autoActivateHeartbeat: false,
            convertImagesToLinks: false,
            noModals: true,
            showLowRepImageUploadWarning: true,
            reputationToPostImages: null,
            bindNavPrevention: true,
            postfix: "",
            imageUploader:
            brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
            contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
            allowUrls: true
            ,
            onDemand: true,
            discardSelector: ".discard-answer"
            ,immediatelyShowMarkdownHelp:true
            );



            );













            draft saved

            draft discarded


















            StackExchange.ready(
            function ()
            StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2felectronics.stackexchange.com%2fquestions%2f451799%2fvhdl-optimization%23new-answer', 'question_page');

            );

            Post as a guest















            Required, but never shown

























            2 Answers
            2






            active

            oldest

            votes








            2 Answers
            2






            active

            oldest

            votes









            active

            oldest

            votes






            active

            oldest

            votes









            5












            $begingroup$

            My guess is that there will be no difference. However, the results will depend greatly on the specific tool set you use as well as the target architecture (FPGA? ASIC?).



            By the time the tools get to the placement and routing steps they have long forgotten what your RTL looked like. In fact, the gates themselves may have been optimized away or the logic function could be modified in such a way that there is no gate in the final design corresponding to your NOR gates...this is almost guaranteed to be the case in an FPGA.






            share|improve this answer









            $endgroup$














            • $begingroup$
              Thanks guys, both very good answers.
              $endgroup$
              – Mark Feldman
              Aug 7 at 0:13















            5












            $begingroup$

            My guess is that there will be no difference. However, the results will depend greatly on the specific tool set you use as well as the target architecture (FPGA? ASIC?).



            By the time the tools get to the placement and routing steps they have long forgotten what your RTL looked like. In fact, the gates themselves may have been optimized away or the logic function could be modified in such a way that there is no gate in the final design corresponding to your NOR gates...this is almost guaranteed to be the case in an FPGA.






            share|improve this answer









            $endgroup$














            • $begingroup$
              Thanks guys, both very good answers.
              $endgroup$
              – Mark Feldman
              Aug 7 at 0:13













            5












            5








            5





            $begingroup$

            My guess is that there will be no difference. However, the results will depend greatly on the specific tool set you use as well as the target architecture (FPGA? ASIC?).



            By the time the tools get to the placement and routing steps they have long forgotten what your RTL looked like. In fact, the gates themselves may have been optimized away or the logic function could be modified in such a way that there is no gate in the final design corresponding to your NOR gates...this is almost guaranteed to be the case in an FPGA.






            share|improve this answer









            $endgroup$



            My guess is that there will be no difference. However, the results will depend greatly on the specific tool set you use as well as the target architecture (FPGA? ASIC?).



            By the time the tools get to the placement and routing steps they have long forgotten what your RTL looked like. In fact, the gates themselves may have been optimized away or the logic function could be modified in such a way that there is no gate in the final design corresponding to your NOR gates...this is almost guaranteed to be the case in an FPGA.







            share|improve this answer












            share|improve this answer



            share|improve this answer










            answered Aug 6 at 11:53









            Elliot AldersonElliot Alderson

            11.5k2 gold badges12 silver badges25 bronze badges




            11.5k2 gold badges12 silver badges25 bronze badges














            • $begingroup$
              Thanks guys, both very good answers.
              $endgroup$
              – Mark Feldman
              Aug 7 at 0:13
















            • $begingroup$
              Thanks guys, both very good answers.
              $endgroup$
              – Mark Feldman
              Aug 7 at 0:13















            $begingroup$
            Thanks guys, both very good answers.
            $endgroup$
            – Mark Feldman
            Aug 7 at 0:13




            $begingroup$
            Thanks guys, both very good answers.
            $endgroup$
            – Mark Feldman
            Aug 7 at 0:13













            4












            $begingroup$

            It does not make a difference.

            Synthesis tools are very, very good at optimizing.



            As to "speed" versus "area": every synthesis tool I know has settings where you can choose which one you prefer. Normally the tools will optimize until it meets the timing constraints and then stop. Which means you get the smallest design which still meets timing.



            The only time your gates are not "moved around" is if you explicitly tell the synthesis tool to not do that. It falls under the category where you tell the tool not to optimize across module boundaries. (e.g. 'no flattening' or 'flattening off' or a tick box with some 'keep boundaries' option.






            share|improve this answer









            $endgroup$



















              4












              $begingroup$

              It does not make a difference.

              Synthesis tools are very, very good at optimizing.



              As to "speed" versus "area": every synthesis tool I know has settings where you can choose which one you prefer. Normally the tools will optimize until it meets the timing constraints and then stop. Which means you get the smallest design which still meets timing.



              The only time your gates are not "moved around" is if you explicitly tell the synthesis tool to not do that. It falls under the category where you tell the tool not to optimize across module boundaries. (e.g. 'no flattening' or 'flattening off' or a tick box with some 'keep boundaries' option.






              share|improve this answer









              $endgroup$

















                4












                4








                4





                $begingroup$

                It does not make a difference.

                Synthesis tools are very, very good at optimizing.



                As to "speed" versus "area": every synthesis tool I know has settings where you can choose which one you prefer. Normally the tools will optimize until it meets the timing constraints and then stop. Which means you get the smallest design which still meets timing.



                The only time your gates are not "moved around" is if you explicitly tell the synthesis tool to not do that. It falls under the category where you tell the tool not to optimize across module boundaries. (e.g. 'no flattening' or 'flattening off' or a tick box with some 'keep boundaries' option.






                share|improve this answer









                $endgroup$



                It does not make a difference.

                Synthesis tools are very, very good at optimizing.



                As to "speed" versus "area": every synthesis tool I know has settings where you can choose which one you prefer. Normally the tools will optimize until it meets the timing constraints and then stop. Which means you get the smallest design which still meets timing.



                The only time your gates are not "moved around" is if you explicitly tell the synthesis tool to not do that. It falls under the category where you tell the tool not to optimize across module boundaries. (e.g. 'no flattening' or 'flattening off' or a tick box with some 'keep boundaries' option.







                share|improve this answer












                share|improve this answer



                share|improve this answer










                answered Aug 6 at 11:53









                OldfartOldfart

                10.1k2 gold badges9 silver badges30 bronze badges




                10.1k2 gold badges9 silver badges30 bronze badges






























                    draft saved

                    draft discarded
















































                    Thanks for contributing an answer to Electrical Engineering Stack Exchange!


                    • Please be sure to answer the question. Provide details and share your research!

                    But avoid


                    • Asking for help, clarification, or responding to other answers.

                    • Making statements based on opinion; back them up with references or personal experience.

                    Use MathJax to format equations. MathJax reference.


                    To learn more, see our tips on writing great answers.




                    draft saved


                    draft discarded














                    StackExchange.ready(
                    function ()
                    StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2felectronics.stackexchange.com%2fquestions%2f451799%2fvhdl-optimization%23new-answer', 'question_page');

                    );

                    Post as a guest















                    Required, but never shown





















































                    Required, but never shown














                    Required, but never shown












                    Required, but never shown







                    Required, but never shown

































                    Required, but never shown














                    Required, but never shown












                    Required, but never shown







                    Required, but never shown







                    Popular posts from this blog

                    Grendel Contents Story Scholarship Depictions Notes References Navigation menu10.1093/notesj/gjn112Berserkeree

                    Area configuration aggregation error after install Porto themeMagento 2.1 CE Installed but front/backend not loading/workingCSS not loading on page within Magento 2 pageCannot install module in Magento 2no commands defined in the “setup” namespace. in Magento2Magento 2: Static files are present but shows 404Why do i have to always run the commands to clean cache in Magento 2.1.8?Failure reason: 'Unable to unserialize value.'Error 500 after magento migrationIn production mode the site does not loadMagento 2 : Error 500 after installing

                    Middle Expansion Olielle Resaix Definition: Uttering songs of triumph shouting with joy triumphant exulting Sejunction Journal 붙다 달 고급 품목 외출 The stretch trades the screeching tin. Definition: The act of speaking with a drawl a drawl Cough Sand Definition: An uproar a quarrel a noisy outbreak Shake Iron Publicize Horse House Baby 사과 Resaix Flaggy Jelly Temporary Unequaled Puppet A drop in the bucket Shrew 성격 회원 성질 미팅 The burn frames the tacky quality. Materialistic The smoke reduces the way. Yammoe Nondescript Cheek 얼굴 배 약하다 날리다 타다 The illegal country shows the iron. Help Rule Drearien Smoke Teaching Meaty Wasp Abraham Lincoln Jaws 진심 수리하다 Size Cork Idea Convert Think Lark John Lennon 거울 청소 군 추천하다 아이스크림