FPGA CPU's, how to find the max speed?How can a processing delay be explicitly declared in VHDL?Simple...

What are some symbols representing peasants/oppressed persons fighting back?

Why doesn't philosophy have higher standards for its arguments?

Remove cardinal direction letters

MQTT subscription topic match

How could an animal "smell" carbon monoxide?

Index Uniqueness Overhead

Using two linked programs, output ordinal numbers up to n

I do not have power to all my breakers

Is it rude to refer to janitors as 'floor people'?

What to look for in climbing shoes?

Source of story about the Vilna Gaon and immigration policy

What is the German word or phrase for "village returning to forest"?

A scene of Jimmy diversity

What is this called? A tube flange bearing threaded for threaded pushrod

Is this artwork (used in a video game) real?

Short story, maybe by Budrys: unpleasant man makes himself conspicuous to attract aliens

Can a pizza stone be fixed after soap has been used to clean it?

What is the superlative of ipse?

Manually select/unselect lines before forwarding to stdout

What's the meaning of こそ in this sentence?

What is the technical explanation of the note "A♭" in a F7 chord in the key of C?

Why don't commercial aircraft adopt a slightly more seaplane-like design to allow safer ditching in case of emergency?

In Adventurers League, is there any way for an 5th-level wizard to gain heavy armor proficiency?

If a player tries to persuade somebody, what should that creature roll not to be persuaded?



FPGA CPU's, how to find the max speed?


How can a processing delay be explicitly declared in VHDL?Simple “Computer Design” projectHow to get a processor design onto FPGASimulating FPGA design without having the actual hardwareHow does a non-FPGA (ie a PC with a CPU, RAM, hard drive) mimic logic gates?How do FPGAs reconfigure themselves based on the users wishes?FPGA doesn't seem to work the way I imaginedHow to get a FPGA design that will definitely work on actual hardwareCan poor hobbyists utilise FPGAs?When was the concept of the FPGA invented?Is the speed of electrical signals always constant within a CPU?






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







2












$begingroup$


I'm just getting into FPGA's, and if I understand correctly, you are connecting logic gates together using code. So if I design a CPU in Verilog, it should connect some logic gates together and work, but how do I know how fast my DIY CPU can run? What does it depend on?










share|improve this question











$endgroup$












  • $begingroup$
    Designing a CPU in Verilog sounds like a nightmare but not impossible. A lot of remakes of old video game consoles use FPGAs for this reason: to mimic the architecture of old CPU chips. However, my question to you is how you intend on designing your own architecture. You're probably going to have to come up with your own instructions set for your forged CPU.
    $endgroup$
    – KingDuken
    8 hours ago








  • 4




    $begingroup$
    @KingDuken I am curious about the alternative to Verilog for designing something like CPU you have in mind (not VHDL I presume :) )?
    $endgroup$
    – Eugene Sh.
    8 hours ago










  • $begingroup$
    @KingDuken That's not the problem I'm having, I already made my CPU and it's architecture on breadboard and want to port it to an FPGA. My question is, how can I calculate what the maximum frequency clock for my CPU would be, what limits it?
    $endgroup$
    – appmaker1358
    8 hours ago










  • $begingroup$
    @EugeneSh. Perhaps "nightmare" was an overstatement. Timing consuming would be a better phrase LOL. Perhaps something like C or Java (MARS is written in Java) would be a good alternative :) But as far as physical design, there's probably no alternative, other than miscellaneous hardware description languages outside of Verilog and VHDL
    $endgroup$
    – KingDuken
    8 hours ago








  • 1




    $begingroup$
    @KingDuken As someone who has designed two CPUs, it is not really that time consuming. You can have a working processor in 1-2 months, if you know what you are doing.
    $endgroup$
    – user110971
    4 hours ago


















2












$begingroup$


I'm just getting into FPGA's, and if I understand correctly, you are connecting logic gates together using code. So if I design a CPU in Verilog, it should connect some logic gates together and work, but how do I know how fast my DIY CPU can run? What does it depend on?










share|improve this question











$endgroup$












  • $begingroup$
    Designing a CPU in Verilog sounds like a nightmare but not impossible. A lot of remakes of old video game consoles use FPGAs for this reason: to mimic the architecture of old CPU chips. However, my question to you is how you intend on designing your own architecture. You're probably going to have to come up with your own instructions set for your forged CPU.
    $endgroup$
    – KingDuken
    8 hours ago








  • 4




    $begingroup$
    @KingDuken I am curious about the alternative to Verilog for designing something like CPU you have in mind (not VHDL I presume :) )?
    $endgroup$
    – Eugene Sh.
    8 hours ago










  • $begingroup$
    @KingDuken That's not the problem I'm having, I already made my CPU and it's architecture on breadboard and want to port it to an FPGA. My question is, how can I calculate what the maximum frequency clock for my CPU would be, what limits it?
    $endgroup$
    – appmaker1358
    8 hours ago










  • $begingroup$
    @EugeneSh. Perhaps "nightmare" was an overstatement. Timing consuming would be a better phrase LOL. Perhaps something like C or Java (MARS is written in Java) would be a good alternative :) But as far as physical design, there's probably no alternative, other than miscellaneous hardware description languages outside of Verilog and VHDL
    $endgroup$
    – KingDuken
    8 hours ago








  • 1




    $begingroup$
    @KingDuken As someone who has designed two CPUs, it is not really that time consuming. You can have a working processor in 1-2 months, if you know what you are doing.
    $endgroup$
    – user110971
    4 hours ago














2












2








2


2



$begingroup$


I'm just getting into FPGA's, and if I understand correctly, you are connecting logic gates together using code. So if I design a CPU in Verilog, it should connect some logic gates together and work, but how do I know how fast my DIY CPU can run? What does it depend on?










share|improve this question











$endgroup$




I'm just getting into FPGA's, and if I understand correctly, you are connecting logic gates together using code. So if I design a CPU in Verilog, it should connect some logic gates together and work, but how do I know how fast my DIY CPU can run? What does it depend on?







fpga cpu homebrew-cpu






share|improve this question















share|improve this question













share|improve this question




share|improve this question








edited 6 hours ago









pipe

10.4k4 gold badges26 silver badges59 bronze badges




10.4k4 gold badges26 silver badges59 bronze badges










asked 8 hours ago









appmaker1358appmaker1358

445 bronze badges




445 bronze badges












  • $begingroup$
    Designing a CPU in Verilog sounds like a nightmare but not impossible. A lot of remakes of old video game consoles use FPGAs for this reason: to mimic the architecture of old CPU chips. However, my question to you is how you intend on designing your own architecture. You're probably going to have to come up with your own instructions set for your forged CPU.
    $endgroup$
    – KingDuken
    8 hours ago








  • 4




    $begingroup$
    @KingDuken I am curious about the alternative to Verilog for designing something like CPU you have in mind (not VHDL I presume :) )?
    $endgroup$
    – Eugene Sh.
    8 hours ago










  • $begingroup$
    @KingDuken That's not the problem I'm having, I already made my CPU and it's architecture on breadboard and want to port it to an FPGA. My question is, how can I calculate what the maximum frequency clock for my CPU would be, what limits it?
    $endgroup$
    – appmaker1358
    8 hours ago










  • $begingroup$
    @EugeneSh. Perhaps "nightmare" was an overstatement. Timing consuming would be a better phrase LOL. Perhaps something like C or Java (MARS is written in Java) would be a good alternative :) But as far as physical design, there's probably no alternative, other than miscellaneous hardware description languages outside of Verilog and VHDL
    $endgroup$
    – KingDuken
    8 hours ago








  • 1




    $begingroup$
    @KingDuken As someone who has designed two CPUs, it is not really that time consuming. You can have a working processor in 1-2 months, if you know what you are doing.
    $endgroup$
    – user110971
    4 hours ago


















  • $begingroup$
    Designing a CPU in Verilog sounds like a nightmare but not impossible. A lot of remakes of old video game consoles use FPGAs for this reason: to mimic the architecture of old CPU chips. However, my question to you is how you intend on designing your own architecture. You're probably going to have to come up with your own instructions set for your forged CPU.
    $endgroup$
    – KingDuken
    8 hours ago








  • 4




    $begingroup$
    @KingDuken I am curious about the alternative to Verilog for designing something like CPU you have in mind (not VHDL I presume :) )?
    $endgroup$
    – Eugene Sh.
    8 hours ago










  • $begingroup$
    @KingDuken That's not the problem I'm having, I already made my CPU and it's architecture on breadboard and want to port it to an FPGA. My question is, how can I calculate what the maximum frequency clock for my CPU would be, what limits it?
    $endgroup$
    – appmaker1358
    8 hours ago










  • $begingroup$
    @EugeneSh. Perhaps "nightmare" was an overstatement. Timing consuming would be a better phrase LOL. Perhaps something like C or Java (MARS is written in Java) would be a good alternative :) But as far as physical design, there's probably no alternative, other than miscellaneous hardware description languages outside of Verilog and VHDL
    $endgroup$
    – KingDuken
    8 hours ago








  • 1




    $begingroup$
    @KingDuken As someone who has designed two CPUs, it is not really that time consuming. You can have a working processor in 1-2 months, if you know what you are doing.
    $endgroup$
    – user110971
    4 hours ago
















$begingroup$
Designing a CPU in Verilog sounds like a nightmare but not impossible. A lot of remakes of old video game consoles use FPGAs for this reason: to mimic the architecture of old CPU chips. However, my question to you is how you intend on designing your own architecture. You're probably going to have to come up with your own instructions set for your forged CPU.
$endgroup$
– KingDuken
8 hours ago






$begingroup$
Designing a CPU in Verilog sounds like a nightmare but not impossible. A lot of remakes of old video game consoles use FPGAs for this reason: to mimic the architecture of old CPU chips. However, my question to you is how you intend on designing your own architecture. You're probably going to have to come up with your own instructions set for your forged CPU.
$endgroup$
– KingDuken
8 hours ago






4




4




$begingroup$
@KingDuken I am curious about the alternative to Verilog for designing something like CPU you have in mind (not VHDL I presume :) )?
$endgroup$
– Eugene Sh.
8 hours ago




$begingroup$
@KingDuken I am curious about the alternative to Verilog for designing something like CPU you have in mind (not VHDL I presume :) )?
$endgroup$
– Eugene Sh.
8 hours ago












$begingroup$
@KingDuken That's not the problem I'm having, I already made my CPU and it's architecture on breadboard and want to port it to an FPGA. My question is, how can I calculate what the maximum frequency clock for my CPU would be, what limits it?
$endgroup$
– appmaker1358
8 hours ago




$begingroup$
@KingDuken That's not the problem I'm having, I already made my CPU and it's architecture on breadboard and want to port it to an FPGA. My question is, how can I calculate what the maximum frequency clock for my CPU would be, what limits it?
$endgroup$
– appmaker1358
8 hours ago












$begingroup$
@EugeneSh. Perhaps "nightmare" was an overstatement. Timing consuming would be a better phrase LOL. Perhaps something like C or Java (MARS is written in Java) would be a good alternative :) But as far as physical design, there's probably no alternative, other than miscellaneous hardware description languages outside of Verilog and VHDL
$endgroup$
– KingDuken
8 hours ago






$begingroup$
@EugeneSh. Perhaps "nightmare" was an overstatement. Timing consuming would be a better phrase LOL. Perhaps something like C or Java (MARS is written in Java) would be a good alternative :) But as far as physical design, there's probably no alternative, other than miscellaneous hardware description languages outside of Verilog and VHDL
$endgroup$
– KingDuken
8 hours ago






1




1




$begingroup$
@KingDuken As someone who has designed two CPUs, it is not really that time consuming. You can have a working processor in 1-2 months, if you know what you are doing.
$endgroup$
– user110971
4 hours ago




$begingroup$
@KingDuken As someone who has designed two CPUs, it is not really that time consuming. You can have a working processor in 1-2 months, if you know what you are doing.
$endgroup$
– user110971
4 hours ago










5 Answers
5






active

oldest

votes


















3












$begingroup$

You synthesize your design in the target technology (a particular FPGA) and let the static timing analysis tools tell you what the minimum clock period is.



Or, you add constraints to the design in the first place, and then the tools will let you know whether they're met or not.






share|improve this answer









$endgroup$













  • $begingroup$
    What would cause the constraints to not be met? What limits the clock period? Is it dependent on the FPGA I use or is it the same for the entire family of FPGA's?(Or maybe for every FPGA in existence?)
    $endgroup$
    – appmaker1358
    8 hours ago






  • 2




    $begingroup$
    It depends on the speed of the FPGA, and how much combinatorial logic you put between FFs in your design.
    $endgroup$
    – Dave Tweed
    8 hours ago






  • 3




    $begingroup$
    @appmaker1358, have you tried to read the datasheet for an FPGA? Speed rating is one of the most important parameters called out in the datasheet.
    $endgroup$
    – The Photon
    8 hours ago






  • 1




    $begingroup$
    The speed will be limited by the longest timing path, which will be the longest propagation delay through the logic and routing between two stateful elements (flip flops, RAMs, etc). Different FPGAs will have different timing parameters and hence a design will achieve different speeds on different FPGAs. There are some parts of the FPGA that are frequency limited though - clock distribution components and PLLs usually have limits, but it's difficult to write HDL that gets near those for non-trivial designs.
    $endgroup$
    – alex.forencich
    8 hours ago






  • 1




    $begingroup$
    Also, you always need to add timing constraints. The placement and routing take the constraints into consideration and work to try to meet them. If you don't add any constraints, the tools won't try very hard and you won't get a very optimistic number.
    $endgroup$
    – alex.forencich
    7 hours ago



















2












$begingroup$

The speed of a design is limited by several things. The biggest will most likely be the propagation delay through the combinatorial logic in your design. If you use a fast FPGA and write your HDL very carefully, you could probably hit 700 MHz on something like a Virtex Ultrascale+. This requires pipelining everywhere so you have the absolute minimum amount of combinatorial logic between stateful components, low fan-outs, and no congested rats-nests.



The fabric logic of different FPGAs will have different timing parameters. Faster, more expensive FPGAs will have smaller delays. It is impossible to say how fast a given design will be without running it through the tool chain and looking at the timing reports from the static timing analysis.



If you can optimize your design so that the critical path is not the limit, then you'll run in to limitations in the clock generation and distribution (PLLs, DCMs, clock buffers, and global clock nets). These limits can be find in part datasheets, but getting near them with a non-trivial design is difficult. I have run stuff on FPGAs at 500 MHz, but this was only a handful of counters to provide triggering signals to other components.






share|improve this answer









$endgroup$





















    0












    $begingroup$

    The CPU won't run faster than the global clocks, so that would place an upper bound on how fast it could run. Usually information on max clock rate is listed in FGPA datasheets.






    share|improve this answer









    $endgroup$





















      0












      $begingroup$

      The speed that your CPU will run will be based on your longest flop-to-flop delay in your synthesized design. The flop-to-flop delay will include clock-to-Q, routing, logic/LUT, and flop setup time. These added together form the critical path of your timing, which you can inspect in the timing report output by the place-and-route tool.



      There are entire design disciplines devoted to making architectures that minimize this delay to get the most out of a given process - pipelining, parallel execution, speculative execution, and so forth. It's a fascinating, involving task, wringing that last ounce of performance out of an FPGA (or for that matter, an ASIC.)



      That said, FPGA vendors will give different speed grades for their parts, which correspond to a max MHz rate. For example a -2 Xilinx Artix is a '250 MHz' part roughly speaking although it's capable of higher clock rates for highly-pipelined designs.



      When you interact with the FPGA synthesis and place-and-route tools, you will need to give constraints for your design. These tell the tool flow the target flop-to-flop delay you're trying to achieve. In Quartus (Altera) and Vivado (Xilinx) these constraints use a syntax called SDC, which stands for Synopsys Design Constraints. SDC came initially from the ASIC world and has been adopted by the FPGA industry as well. Get to know SDC - it will help you get the results you want.



      Altera and Xilinx have online communities for help with how to use SDC syntax and many other topics.



      That all said, if you care about speed you should consider an FPGA that has a CPU hard macro in it, such as Zynq.






      share|improve this answer











      $endgroup$





















        -1












        $begingroup$

        It is not an answer to your question(s) but I'd like to suggest reading the answers and comments here:



        How can a processing delay be explicitly declared in VHDL?



        There are good explanations on why, relying only on the VHDL (or Verilog) level, it is not possible to guarantee the timing behavior of the synthesized code for any FPGA in a portable way.



        A simple synthesis tool option change may brake the timing of a module.






        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%2f448457%2ffpga-cpus-how-to-find-the-max-speed%23new-answer', 'question_page');
          }
          );

          Post as a guest















          Required, but never shown

























          5 Answers
          5






          active

          oldest

          votes








          5 Answers
          5






          active

          oldest

          votes









          active

          oldest

          votes






          active

          oldest

          votes









          3












          $begingroup$

          You synthesize your design in the target technology (a particular FPGA) and let the static timing analysis tools tell you what the minimum clock period is.



          Or, you add constraints to the design in the first place, and then the tools will let you know whether they're met or not.






          share|improve this answer









          $endgroup$













          • $begingroup$
            What would cause the constraints to not be met? What limits the clock period? Is it dependent on the FPGA I use or is it the same for the entire family of FPGA's?(Or maybe for every FPGA in existence?)
            $endgroup$
            – appmaker1358
            8 hours ago






          • 2




            $begingroup$
            It depends on the speed of the FPGA, and how much combinatorial logic you put between FFs in your design.
            $endgroup$
            – Dave Tweed
            8 hours ago






          • 3




            $begingroup$
            @appmaker1358, have you tried to read the datasheet for an FPGA? Speed rating is one of the most important parameters called out in the datasheet.
            $endgroup$
            – The Photon
            8 hours ago






          • 1




            $begingroup$
            The speed will be limited by the longest timing path, which will be the longest propagation delay through the logic and routing between two stateful elements (flip flops, RAMs, etc). Different FPGAs will have different timing parameters and hence a design will achieve different speeds on different FPGAs. There are some parts of the FPGA that are frequency limited though - clock distribution components and PLLs usually have limits, but it's difficult to write HDL that gets near those for non-trivial designs.
            $endgroup$
            – alex.forencich
            8 hours ago






          • 1




            $begingroup$
            Also, you always need to add timing constraints. The placement and routing take the constraints into consideration and work to try to meet them. If you don't add any constraints, the tools won't try very hard and you won't get a very optimistic number.
            $endgroup$
            – alex.forencich
            7 hours ago
















          3












          $begingroup$

          You synthesize your design in the target technology (a particular FPGA) and let the static timing analysis tools tell you what the minimum clock period is.



          Or, you add constraints to the design in the first place, and then the tools will let you know whether they're met or not.






          share|improve this answer









          $endgroup$













          • $begingroup$
            What would cause the constraints to not be met? What limits the clock period? Is it dependent on the FPGA I use or is it the same for the entire family of FPGA's?(Or maybe for every FPGA in existence?)
            $endgroup$
            – appmaker1358
            8 hours ago






          • 2




            $begingroup$
            It depends on the speed of the FPGA, and how much combinatorial logic you put between FFs in your design.
            $endgroup$
            – Dave Tweed
            8 hours ago






          • 3




            $begingroup$
            @appmaker1358, have you tried to read the datasheet for an FPGA? Speed rating is one of the most important parameters called out in the datasheet.
            $endgroup$
            – The Photon
            8 hours ago






          • 1




            $begingroup$
            The speed will be limited by the longest timing path, which will be the longest propagation delay through the logic and routing between two stateful elements (flip flops, RAMs, etc). Different FPGAs will have different timing parameters and hence a design will achieve different speeds on different FPGAs. There are some parts of the FPGA that are frequency limited though - clock distribution components and PLLs usually have limits, but it's difficult to write HDL that gets near those for non-trivial designs.
            $endgroup$
            – alex.forencich
            8 hours ago






          • 1




            $begingroup$
            Also, you always need to add timing constraints. The placement and routing take the constraints into consideration and work to try to meet them. If you don't add any constraints, the tools won't try very hard and you won't get a very optimistic number.
            $endgroup$
            – alex.forencich
            7 hours ago














          3












          3








          3





          $begingroup$

          You synthesize your design in the target technology (a particular FPGA) and let the static timing analysis tools tell you what the minimum clock period is.



          Or, you add constraints to the design in the first place, and then the tools will let you know whether they're met or not.






          share|improve this answer









          $endgroup$



          You synthesize your design in the target technology (a particular FPGA) and let the static timing analysis tools tell you what the minimum clock period is.



          Or, you add constraints to the design in the first place, and then the tools will let you know whether they're met or not.







          share|improve this answer












          share|improve this answer



          share|improve this answer










          answered 8 hours ago









          Dave TweedDave Tweed

          130k10 gold badges164 silver badges279 bronze badges




          130k10 gold badges164 silver badges279 bronze badges












          • $begingroup$
            What would cause the constraints to not be met? What limits the clock period? Is it dependent on the FPGA I use or is it the same for the entire family of FPGA's?(Or maybe for every FPGA in existence?)
            $endgroup$
            – appmaker1358
            8 hours ago






          • 2




            $begingroup$
            It depends on the speed of the FPGA, and how much combinatorial logic you put between FFs in your design.
            $endgroup$
            – Dave Tweed
            8 hours ago






          • 3




            $begingroup$
            @appmaker1358, have you tried to read the datasheet for an FPGA? Speed rating is one of the most important parameters called out in the datasheet.
            $endgroup$
            – The Photon
            8 hours ago






          • 1




            $begingroup$
            The speed will be limited by the longest timing path, which will be the longest propagation delay through the logic and routing between two stateful elements (flip flops, RAMs, etc). Different FPGAs will have different timing parameters and hence a design will achieve different speeds on different FPGAs. There are some parts of the FPGA that are frequency limited though - clock distribution components and PLLs usually have limits, but it's difficult to write HDL that gets near those for non-trivial designs.
            $endgroup$
            – alex.forencich
            8 hours ago






          • 1




            $begingroup$
            Also, you always need to add timing constraints. The placement and routing take the constraints into consideration and work to try to meet them. If you don't add any constraints, the tools won't try very hard and you won't get a very optimistic number.
            $endgroup$
            – alex.forencich
            7 hours ago


















          • $begingroup$
            What would cause the constraints to not be met? What limits the clock period? Is it dependent on the FPGA I use or is it the same for the entire family of FPGA's?(Or maybe for every FPGA in existence?)
            $endgroup$
            – appmaker1358
            8 hours ago






          • 2




            $begingroup$
            It depends on the speed of the FPGA, and how much combinatorial logic you put between FFs in your design.
            $endgroup$
            – Dave Tweed
            8 hours ago






          • 3




            $begingroup$
            @appmaker1358, have you tried to read the datasheet for an FPGA? Speed rating is one of the most important parameters called out in the datasheet.
            $endgroup$
            – The Photon
            8 hours ago






          • 1




            $begingroup$
            The speed will be limited by the longest timing path, which will be the longest propagation delay through the logic and routing between two stateful elements (flip flops, RAMs, etc). Different FPGAs will have different timing parameters and hence a design will achieve different speeds on different FPGAs. There are some parts of the FPGA that are frequency limited though - clock distribution components and PLLs usually have limits, but it's difficult to write HDL that gets near those for non-trivial designs.
            $endgroup$
            – alex.forencich
            8 hours ago






          • 1




            $begingroup$
            Also, you always need to add timing constraints. The placement and routing take the constraints into consideration and work to try to meet them. If you don't add any constraints, the tools won't try very hard and you won't get a very optimistic number.
            $endgroup$
            – alex.forencich
            7 hours ago
















          $begingroup$
          What would cause the constraints to not be met? What limits the clock period? Is it dependent on the FPGA I use or is it the same for the entire family of FPGA's?(Or maybe for every FPGA in existence?)
          $endgroup$
          – appmaker1358
          8 hours ago




          $begingroup$
          What would cause the constraints to not be met? What limits the clock period? Is it dependent on the FPGA I use or is it the same for the entire family of FPGA's?(Or maybe for every FPGA in existence?)
          $endgroup$
          – appmaker1358
          8 hours ago




          2




          2




          $begingroup$
          It depends on the speed of the FPGA, and how much combinatorial logic you put between FFs in your design.
          $endgroup$
          – Dave Tweed
          8 hours ago




          $begingroup$
          It depends on the speed of the FPGA, and how much combinatorial logic you put between FFs in your design.
          $endgroup$
          – Dave Tweed
          8 hours ago




          3




          3




          $begingroup$
          @appmaker1358, have you tried to read the datasheet for an FPGA? Speed rating is one of the most important parameters called out in the datasheet.
          $endgroup$
          – The Photon
          8 hours ago




          $begingroup$
          @appmaker1358, have you tried to read the datasheet for an FPGA? Speed rating is one of the most important parameters called out in the datasheet.
          $endgroup$
          – The Photon
          8 hours ago




          1




          1




          $begingroup$
          The speed will be limited by the longest timing path, which will be the longest propagation delay through the logic and routing between two stateful elements (flip flops, RAMs, etc). Different FPGAs will have different timing parameters and hence a design will achieve different speeds on different FPGAs. There are some parts of the FPGA that are frequency limited though - clock distribution components and PLLs usually have limits, but it's difficult to write HDL that gets near those for non-trivial designs.
          $endgroup$
          – alex.forencich
          8 hours ago




          $begingroup$
          The speed will be limited by the longest timing path, which will be the longest propagation delay through the logic and routing between two stateful elements (flip flops, RAMs, etc). Different FPGAs will have different timing parameters and hence a design will achieve different speeds on different FPGAs. There are some parts of the FPGA that are frequency limited though - clock distribution components and PLLs usually have limits, but it's difficult to write HDL that gets near those for non-trivial designs.
          $endgroup$
          – alex.forencich
          8 hours ago




          1




          1




          $begingroup$
          Also, you always need to add timing constraints. The placement and routing take the constraints into consideration and work to try to meet them. If you don't add any constraints, the tools won't try very hard and you won't get a very optimistic number.
          $endgroup$
          – alex.forencich
          7 hours ago




          $begingroup$
          Also, you always need to add timing constraints. The placement and routing take the constraints into consideration and work to try to meet them. If you don't add any constraints, the tools won't try very hard and you won't get a very optimistic number.
          $endgroup$
          – alex.forencich
          7 hours ago













          2












          $begingroup$

          The speed of a design is limited by several things. The biggest will most likely be the propagation delay through the combinatorial logic in your design. If you use a fast FPGA and write your HDL very carefully, you could probably hit 700 MHz on something like a Virtex Ultrascale+. This requires pipelining everywhere so you have the absolute minimum amount of combinatorial logic between stateful components, low fan-outs, and no congested rats-nests.



          The fabric logic of different FPGAs will have different timing parameters. Faster, more expensive FPGAs will have smaller delays. It is impossible to say how fast a given design will be without running it through the tool chain and looking at the timing reports from the static timing analysis.



          If you can optimize your design so that the critical path is not the limit, then you'll run in to limitations in the clock generation and distribution (PLLs, DCMs, clock buffers, and global clock nets). These limits can be find in part datasheets, but getting near them with a non-trivial design is difficult. I have run stuff on FPGAs at 500 MHz, but this was only a handful of counters to provide triggering signals to other components.






          share|improve this answer









          $endgroup$


















            2












            $begingroup$

            The speed of a design is limited by several things. The biggest will most likely be the propagation delay through the combinatorial logic in your design. If you use a fast FPGA and write your HDL very carefully, you could probably hit 700 MHz on something like a Virtex Ultrascale+. This requires pipelining everywhere so you have the absolute minimum amount of combinatorial logic between stateful components, low fan-outs, and no congested rats-nests.



            The fabric logic of different FPGAs will have different timing parameters. Faster, more expensive FPGAs will have smaller delays. It is impossible to say how fast a given design will be without running it through the tool chain and looking at the timing reports from the static timing analysis.



            If you can optimize your design so that the critical path is not the limit, then you'll run in to limitations in the clock generation and distribution (PLLs, DCMs, clock buffers, and global clock nets). These limits can be find in part datasheets, but getting near them with a non-trivial design is difficult. I have run stuff on FPGAs at 500 MHz, but this was only a handful of counters to provide triggering signals to other components.






            share|improve this answer









            $endgroup$
















              2












              2








              2





              $begingroup$

              The speed of a design is limited by several things. The biggest will most likely be the propagation delay through the combinatorial logic in your design. If you use a fast FPGA and write your HDL very carefully, you could probably hit 700 MHz on something like a Virtex Ultrascale+. This requires pipelining everywhere so you have the absolute minimum amount of combinatorial logic between stateful components, low fan-outs, and no congested rats-nests.



              The fabric logic of different FPGAs will have different timing parameters. Faster, more expensive FPGAs will have smaller delays. It is impossible to say how fast a given design will be without running it through the tool chain and looking at the timing reports from the static timing analysis.



              If you can optimize your design so that the critical path is not the limit, then you'll run in to limitations in the clock generation and distribution (PLLs, DCMs, clock buffers, and global clock nets). These limits can be find in part datasheets, but getting near them with a non-trivial design is difficult. I have run stuff on FPGAs at 500 MHz, but this was only a handful of counters to provide triggering signals to other components.






              share|improve this answer









              $endgroup$



              The speed of a design is limited by several things. The biggest will most likely be the propagation delay through the combinatorial logic in your design. If you use a fast FPGA and write your HDL very carefully, you could probably hit 700 MHz on something like a Virtex Ultrascale+. This requires pipelining everywhere so you have the absolute minimum amount of combinatorial logic between stateful components, low fan-outs, and no congested rats-nests.



              The fabric logic of different FPGAs will have different timing parameters. Faster, more expensive FPGAs will have smaller delays. It is impossible to say how fast a given design will be without running it through the tool chain and looking at the timing reports from the static timing analysis.



              If you can optimize your design so that the critical path is not the limit, then you'll run in to limitations in the clock generation and distribution (PLLs, DCMs, clock buffers, and global clock nets). These limits can be find in part datasheets, but getting near them with a non-trivial design is difficult. I have run stuff on FPGAs at 500 MHz, but this was only a handful of counters to provide triggering signals to other components.







              share|improve this answer












              share|improve this answer



              share|improve this answer










              answered 7 hours ago









              alex.forencichalex.forencich

              34k1 gold badge54 silver badges92 bronze badges




              34k1 gold badge54 silver badges92 bronze badges























                  0












                  $begingroup$

                  The CPU won't run faster than the global clocks, so that would place an upper bound on how fast it could run. Usually information on max clock rate is listed in FGPA datasheets.






                  share|improve this answer









                  $endgroup$


















                    0












                    $begingroup$

                    The CPU won't run faster than the global clocks, so that would place an upper bound on how fast it could run. Usually information on max clock rate is listed in FGPA datasheets.






                    share|improve this answer









                    $endgroup$
















                      0












                      0








                      0





                      $begingroup$

                      The CPU won't run faster than the global clocks, so that would place an upper bound on how fast it could run. Usually information on max clock rate is listed in FGPA datasheets.






                      share|improve this answer









                      $endgroup$



                      The CPU won't run faster than the global clocks, so that would place an upper bound on how fast it could run. Usually information on max clock rate is listed in FGPA datasheets.







                      share|improve this answer












                      share|improve this answer



                      share|improve this answer










                      answered 7 hours ago









                      laptop2dlaptop2d

                      34.1k12 gold badges40 silver badges101 bronze badges




                      34.1k12 gold badges40 silver badges101 bronze badges























                          0












                          $begingroup$

                          The speed that your CPU will run will be based on your longest flop-to-flop delay in your synthesized design. The flop-to-flop delay will include clock-to-Q, routing, logic/LUT, and flop setup time. These added together form the critical path of your timing, which you can inspect in the timing report output by the place-and-route tool.



                          There are entire design disciplines devoted to making architectures that minimize this delay to get the most out of a given process - pipelining, parallel execution, speculative execution, and so forth. It's a fascinating, involving task, wringing that last ounce of performance out of an FPGA (or for that matter, an ASIC.)



                          That said, FPGA vendors will give different speed grades for their parts, which correspond to a max MHz rate. For example a -2 Xilinx Artix is a '250 MHz' part roughly speaking although it's capable of higher clock rates for highly-pipelined designs.



                          When you interact with the FPGA synthesis and place-and-route tools, you will need to give constraints for your design. These tell the tool flow the target flop-to-flop delay you're trying to achieve. In Quartus (Altera) and Vivado (Xilinx) these constraints use a syntax called SDC, which stands for Synopsys Design Constraints. SDC came initially from the ASIC world and has been adopted by the FPGA industry as well. Get to know SDC - it will help you get the results you want.



                          Altera and Xilinx have online communities for help with how to use SDC syntax and many other topics.



                          That all said, if you care about speed you should consider an FPGA that has a CPU hard macro in it, such as Zynq.






                          share|improve this answer











                          $endgroup$


















                            0












                            $begingroup$

                            The speed that your CPU will run will be based on your longest flop-to-flop delay in your synthesized design. The flop-to-flop delay will include clock-to-Q, routing, logic/LUT, and flop setup time. These added together form the critical path of your timing, which you can inspect in the timing report output by the place-and-route tool.



                            There are entire design disciplines devoted to making architectures that minimize this delay to get the most out of a given process - pipelining, parallel execution, speculative execution, and so forth. It's a fascinating, involving task, wringing that last ounce of performance out of an FPGA (or for that matter, an ASIC.)



                            That said, FPGA vendors will give different speed grades for their parts, which correspond to a max MHz rate. For example a -2 Xilinx Artix is a '250 MHz' part roughly speaking although it's capable of higher clock rates for highly-pipelined designs.



                            When you interact with the FPGA synthesis and place-and-route tools, you will need to give constraints for your design. These tell the tool flow the target flop-to-flop delay you're trying to achieve. In Quartus (Altera) and Vivado (Xilinx) these constraints use a syntax called SDC, which stands for Synopsys Design Constraints. SDC came initially from the ASIC world and has been adopted by the FPGA industry as well. Get to know SDC - it will help you get the results you want.



                            Altera and Xilinx have online communities for help with how to use SDC syntax and many other topics.



                            That all said, if you care about speed you should consider an FPGA that has a CPU hard macro in it, such as Zynq.






                            share|improve this answer











                            $endgroup$
















                              0












                              0








                              0





                              $begingroup$

                              The speed that your CPU will run will be based on your longest flop-to-flop delay in your synthesized design. The flop-to-flop delay will include clock-to-Q, routing, logic/LUT, and flop setup time. These added together form the critical path of your timing, which you can inspect in the timing report output by the place-and-route tool.



                              There are entire design disciplines devoted to making architectures that minimize this delay to get the most out of a given process - pipelining, parallel execution, speculative execution, and so forth. It's a fascinating, involving task, wringing that last ounce of performance out of an FPGA (or for that matter, an ASIC.)



                              That said, FPGA vendors will give different speed grades for their parts, which correspond to a max MHz rate. For example a -2 Xilinx Artix is a '250 MHz' part roughly speaking although it's capable of higher clock rates for highly-pipelined designs.



                              When you interact with the FPGA synthesis and place-and-route tools, you will need to give constraints for your design. These tell the tool flow the target flop-to-flop delay you're trying to achieve. In Quartus (Altera) and Vivado (Xilinx) these constraints use a syntax called SDC, which stands for Synopsys Design Constraints. SDC came initially from the ASIC world and has been adopted by the FPGA industry as well. Get to know SDC - it will help you get the results you want.



                              Altera and Xilinx have online communities for help with how to use SDC syntax and many other topics.



                              That all said, if you care about speed you should consider an FPGA that has a CPU hard macro in it, such as Zynq.






                              share|improve this answer











                              $endgroup$



                              The speed that your CPU will run will be based on your longest flop-to-flop delay in your synthesized design. The flop-to-flop delay will include clock-to-Q, routing, logic/LUT, and flop setup time. These added together form the critical path of your timing, which you can inspect in the timing report output by the place-and-route tool.



                              There are entire design disciplines devoted to making architectures that minimize this delay to get the most out of a given process - pipelining, parallel execution, speculative execution, and so forth. It's a fascinating, involving task, wringing that last ounce of performance out of an FPGA (or for that matter, an ASIC.)



                              That said, FPGA vendors will give different speed grades for their parts, which correspond to a max MHz rate. For example a -2 Xilinx Artix is a '250 MHz' part roughly speaking although it's capable of higher clock rates for highly-pipelined designs.



                              When you interact with the FPGA synthesis and place-and-route tools, you will need to give constraints for your design. These tell the tool flow the target flop-to-flop delay you're trying to achieve. In Quartus (Altera) and Vivado (Xilinx) these constraints use a syntax called SDC, which stands for Synopsys Design Constraints. SDC came initially from the ASIC world and has been adopted by the FPGA industry as well. Get to know SDC - it will help you get the results you want.



                              Altera and Xilinx have online communities for help with how to use SDC syntax and many other topics.



                              That all said, if you care about speed you should consider an FPGA that has a CPU hard macro in it, such as Zynq.







                              share|improve this answer














                              share|improve this answer



                              share|improve this answer








                              edited 6 hours ago

























                              answered 6 hours ago









                              hacktasticalhacktastical

                              9407 bronze badges




                              9407 bronze badges























                                  -1












                                  $begingroup$

                                  It is not an answer to your question(s) but I'd like to suggest reading the answers and comments here:



                                  How can a processing delay be explicitly declared in VHDL?



                                  There are good explanations on why, relying only on the VHDL (or Verilog) level, it is not possible to guarantee the timing behavior of the synthesized code for any FPGA in a portable way.



                                  A simple synthesis tool option change may brake the timing of a module.






                                  share|improve this answer









                                  $endgroup$


















                                    -1












                                    $begingroup$

                                    It is not an answer to your question(s) but I'd like to suggest reading the answers and comments here:



                                    How can a processing delay be explicitly declared in VHDL?



                                    There are good explanations on why, relying only on the VHDL (or Verilog) level, it is not possible to guarantee the timing behavior of the synthesized code for any FPGA in a portable way.



                                    A simple synthesis tool option change may brake the timing of a module.






                                    share|improve this answer









                                    $endgroup$
















                                      -1












                                      -1








                                      -1





                                      $begingroup$

                                      It is not an answer to your question(s) but I'd like to suggest reading the answers and comments here:



                                      How can a processing delay be explicitly declared in VHDL?



                                      There are good explanations on why, relying only on the VHDL (or Verilog) level, it is not possible to guarantee the timing behavior of the synthesized code for any FPGA in a portable way.



                                      A simple synthesis tool option change may brake the timing of a module.






                                      share|improve this answer









                                      $endgroup$



                                      It is not an answer to your question(s) but I'd like to suggest reading the answers and comments here:



                                      How can a processing delay be explicitly declared in VHDL?



                                      There are good explanations on why, relying only on the VHDL (or Verilog) level, it is not possible to guarantee the timing behavior of the synthesized code for any FPGA in a portable way.



                                      A simple synthesis tool option change may brake the timing of a module.







                                      share|improve this answer












                                      share|improve this answer



                                      share|improve this answer










                                      answered 5 hours ago









                                      vangelovangelo

                                      7671 silver badge11 bronze badges




                                      7671 silver badge11 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%2f448457%2ffpga-cpus-how-to-find-the-max-speed%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

                                          Taj Mahal Inhaltsverzeichnis Aufbau | Geschichte | 350-Jahr-Feier | Heutige Bedeutung | Siehe auch |...

                                          Baia Sprie Cuprins Etimologie | Istorie | Demografie | Politică și administrație | Arii naturale...

                                          Nicolae Petrescu-Găină Cuprins Biografie | Opera | In memoriam | Varia | Controverse, incertitudini...