LOGIN   :::   RECOVER PASS   :::   GET ACCOUNT    
Browse
  • Projects
  • Code (CVS)
  • Forums
  • News
  • Articles
  • Polls
  •  
    OpenCores
  • FAQ
  • CVS HowTo
  • Mission
  • Media
  • Tools
  • Advertise
  • Mirrors
  • Logos
  • Contact us
  • Job Opportunity
  •  
    Tools
  • Search
      
  • Download Cores (CVSGet)
  •  
    More
  • Wishbone
  • Perlilog
  • EDA tools
  • OpenTech CD
  •  
    Navigation: All forums > Cvs-checkins > Message List > Message Post

    Message

    Reply | Reply all
    Date Prev | Date Next | Thread Prev | Thread Next Date Index | Thread Index

    From: cvs at opencores.org<cvs@o...>
    Date: Mon Jun 30 19:06:20 CEST 2008
    Subject: [cvs-checkins] MODIFIED: cryptosorter ...
    Top
    Date: 00/08/06 30:19:06

    Added: cryptosorter/lib/bsv/BRAMFeeder/src BRAMFeeder.bsv
    BRAMInitiator.bsv BRAMInitiator.v
    BRAMInitiatorWires.bsv mkBRAMFeeder.sched
    Log:
    Adding library codes




    Revision Changes Path
    1.1 cryptosorter/lib/bsv/BRAMFeeder/src/BRAMFeeder.bsv

    http://www.opencores.org/cvsweb.shtml/cryptosorter/lib/bsv/BRAMFeeder/src/BRAMFeeder.bsv?rev=1.1&content-type=text/x-cvsweb-markup

    Index: BRAMFeeder.bsv
    ===================================================================
    /*
    Copyright (c) 2007 MIT

    Permission is hereby granted, free of charge, to any person
    obtaining a copy of this software and associated documentation
    files (the "Software"), to deal in the Software without
    restriction, including without limitation the rights to use,
    copy, modify, merge, publish, distribute, sublicense, and/or sell
    copies of the Software, and to permit persons to whom the
    Software is furnished to do so, subject to the following
    conditions:

    The above copyright notice and this permission notice shall be
    included in all copies or substantial portions of the Software.

    THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
    EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
    OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
    NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
    HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
    WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
    FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
    OTHER DEALINGS IN THE SOFTWARE.

    Author: Michael Pellauer, Nirav Dave
    */

    import BRAM::*;
    import BRAMInitiatorWires::*;
    import GetPut::*;
    import FIFO::*;
    import FIFOF::*;
    //import Types::*;
    //import Interfaces::*;
    import Debug::*;

    import BRAMInitiator::*;

    //A message to the PPC
    typedef Bit#(32) PPCMessage;


    typedef enum{
    FI_Initialize,
    FI_InIdle,
    FI_InStartCheckRead,
    FI_InStartRead,
    FI_InStartTake,
    FI_OutStartCheckWrite,
    FI_OutStartWrite,
    FI_OutStartPush,
    FI_CheckLoadStore,
    FI_Load,
    FI_LoadTake,
    FI_Store,
    FI_StorePush,
    FI_command
    } FeederState deriving(Eq,Bits);


    interface Feeder;

    interface Put#(PPCMessage) ppcMessageInput;
    interface Get#(PPCMessage) ppcMessageOutput;
    interface BRAMInitiatorWires#(Bit#(14)) bramInitiatorWires;

    endinterface

    Bool feederDebug = False;

    (* synthesize *)
    module mkBRAMFeeder(Feeder);

    // Data is held in 2 addr blocks. as
    // Addr n : 1---------22222 <- 1 valid bit (otherwise all zero)
    // 2 top bits of payload
    // n+1 : 333333333333333 <- 3 rest of payload

    //State

    BRAMInitiator#(Bit#(14)) bramInit <- mkBRAMInitiator;
    let bram = bramInit.bram;

    //BRAM#(Bit#(16), Bit#(32)) bram <- mkBRAM_Full();
    FIFOF#(PPCMessage) ppcMesgQ <- mkFIFOF(); FIFOF#(PPCMessage) ppcInstQ <- mkFIFOF(); let minReadPtr = 0; let maxReadPtr = 31; let minWritePtr = 32; let maxWritePtr = 63; let ready = True; let debugF = debug(feederDebug); Reg#(Bit#(14)) readPtr <- mkReg(minReadPtr); Reg#(Bit#(14)) writePtr <- mkReg(minWritePtr); Reg#(FeederState) state <- mkReg(FI_InStartCheckRead); Reg#(Bit#(32)) partialRead <- mkReg(0); Reg#(Bit#(30)) heartbeat <- mkReg(0); //Every so often send a message to the PPC indicating we're still alive rule beat (True); let newheart = heartbeat + 1; heartbeat <= newheart; if (newheart == 0) ppcMesgQ.enq(0); endrule /////////////////////////////////////////////////////////// //Initialize /////////////////////////////////////////////////////////// //Reg#(Maybe#(Bit#(14))) initReg <- mkReg(Just(0)); //Bool ready = !isJust(initReg); //rule initBRAM(initReg matches tagged Just .i); // $display("Init"); // bram.write(i, 0); // initReg <= (i == maxWritePtr) ? Nothing : Just (i + 1); //endrule /////////////////////////////////////////////////////////// // In goes to FPGA, Out goes back to PPC /////////////////////////////////////////////////////////// let state_tryread = (ppcInstQ.notFull ? FI_InStartCheckRead: FI_InIdle); let state_trywrite = (ppcMesgQ.notEmpty) ? FI_OutStartCheckWrite : FI_InIdle; rule inStartIdle(ready && state == FI_InIdle); if(state_tryread == FI_InIdle) begin state <= state_trywrite; end else begin state <= state_tryread; end endrule rule inStartCheckRead(ready && state == FI_InStartCheckRead); debugF($display("BRAM: StartCheckRead")); bram.read_req(readPtr); state <= FI_InStartRead; endrule rule inStartRead(ready && state == FI_InStartRead); let v <- bram.read_resp(); Bool valid = (v[31] == 1); state <= (valid) ? FI_InStartTake : state_trywrite; debugF($display("BRAM: StartRead %h", v)); if (valid) begin //$display("BRAM: read fstinst [%d] = %h",readPtr, v); partialRead <= v; bram.read_req(readPtr+1); // end endrule rule inStartTake(ready && state == FI_InStartTake); debugF($display("BRAM: StartTake")); let val <- bram.read_resp(); Bit#(63) pack_i = truncate({partialRead,val}); PPCMessage i = unpack(truncate(pack_i));//truncate({partialRead,val})); ppcInstQ.enq(i); // $display("BRAM: read sndinst [%d] = %h",readPtr+1, val); // $display("BRAM: got PPCMessage %h",pack_i); // $display("Getting Inst: %h %h => %h",partialRead, val, {partialRead,val}); bram.write(readPtr, 0); readPtr <= (readPtr + 2 > maxReadPtr) ? minReadPtr : (readPtr + 2); state <= state_trywrite; endrule rule inStartCheckWrite(ready && state == FI_OutStartCheckWrite); debugF($display("BRAM: StartCheckWrite")); bram.read_req(writePtr); state <= FI_OutStartWrite; endrule rule inStartWrite(ready && state == FI_OutStartWrite); debugF($display("BRAM: StartWrite")); let v <- bram.read_resp(); Bool valid = (v[31] == 0); state <= (valid) ? FI_OutStartPush : state_tryread; if (valid) begin $display("BRAM: write [%d] = %h",writePtr+1, ppcMesgQ.first); bram.write(writePtr+1, ppcMesgQ.first()); ppcMesgQ.deq(); end endrule rule inStartPush(ready && state == FI_OutStartPush); debugF($display("BRAM: StartPush")); $display("BRAM: write [%d] = %h",writePtr, 32'hFFFFFFFF); bram.write(writePtr, 32'hFFFFFFFF);//all 1s writePtr <= (writePtr + 2 > maxWritePtr) ? minWritePtr : (writePtr + 2); state <= state_tryread; endrule //Interface interface ppcMessageInput = fifoToPut(fifofToFifo(ppcMesgQ)); interface ppcMessageOutput = fifoToGet(fifofToFifo(ppcInstQ)); interface bramInitiatorWires = bramInit.bramInitiatorWires; endmodule 1.1 cryptosorter/lib/bsv/BRAMFeeder/src/BRAMInitiator.bsv http://www.opencores.org/cvsweb.shtml/cryptosorter/lib/bsv/BRAMFeeder/src/BRAMInitiator.bsv?rev=1.1&content-type=text/x-cvsweb-markup Index: BRAMInitiator.bsv =================================================================== /* Copyright (c) 2007 MIT Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. Author: Kermin Fleming */ import BRAMInitiatorWires::*; import BRAM::*; interface BRAMInitiator#(type idx_type); interface BRAM#(idx_type, Bit#(32)) bram; interface BRAMInitiatorWires#(idx_type) bramInitiatorWires; endinterface interface BRAMInitiatorFlat#(type idx_type); method ActionValue#(Bit#(32)) read_resp(); method Action read_req(idx_type idx); method Action write(idx_type idx, Bit#(32) value); method Bit#(1) bramCLK(); method Bit#(1) bramRST(); method idx_type bramAddr(); method Bit#(32) bramDout(); method Action bramDin(Bit#(32) value); method Bit#(4) bramWEN(); method Bit#(1) bramEN(); endinterface module mkBRAMInitiator (BRAMInitiator#(idx_type)) provisos (Bits#(idx_type, idx), Literal#(idx_type)); BRAMInitiatorFlat#(idx_type) bramFlat <- mkBRAMInitiatorFlat(); interface BRAM bram; method write = bramFlat.write; method read_req = bramFlat.read_req; method read_resp = bramFlat.read_resp; endinterface interface BRAMInitiatorWires bramInitiatorWires; method bramCLK = bramFlat.bramCLK; method bramRST = bramFlat.bramRST; method bramAddr = bramFlat.bramAddr; method bramDout = bramFlat.bramDout; method bramDin = bramFlat.bramDin; method bramWEN = bramFlat.bramWEN; method bramEN = bramFlat.bramEN; endinterface endmodule import "BVI" BRAMInitiator = module mkBRAMInitiatorFlat //interface: (BRAMInitiatorFlat#(idx_type)) provisos (Bits#(idx_type, idx), Literal#(idx_type)); default_clock clk(CLK); parameter addr_width = valueof(idx); method DOUT read_resp() ready(DOUT_RDY) enable(DOUT_EN); method read_req(RD_ADDR) ready(RD_RDY) enable(RD_EN); method write(WR_ADDR, WR_VAL) enable(WR_EN); method BRAM_CLK bramCLK(); method BRAM_RST bramRST(); method BRAM_Addr bramAddr(); method BRAM_Dout bramDout(); method bramDin(BRAM_Din) enable(BRAM_Dummy_Enable); method BRAM_WEN bramWEN(); method BRAM_EN bramEN(); schedule read_req CF (read_resp, write, bramCLK, bramRST, bramAddr, bramDout, bramDin, bramWEN, bramEN); schedule read_resp CF (read_req, write, bramCLK, bramRST, bramAddr, bramDout, bramDin, bramWEN, bramEN); schedule write CF (read_req, read_resp, bramCLK, bramRST, bramAddr, bramDout, bramDin, bramWEN, bramEN); // All the BRAM methods are CF schedule bramCLK CF (read_resp, read_req, write, bramCLK, bramRST, bramAddr, bramDout, bramDin, bramWEN, bramEN); schedule bramRST CF (read_resp, read_req, write, bramCLK, bramRST, bramAddr, bramDout, bramDin, bramWEN, bramEN); schedule bramAddr CF (read_resp, read_req, write, bramCLK, bramRST, bramAddr, bramDout, bramDin, bramWEN, bramEN); schedule bramDout CF (read_resp, read_req, write, bramCLK, bramRST, bramAddr, bramDout, bramDin, bramWEN, bramEN); schedule bramDin CF (read_resp, read_req, write, bramCLK, bramRST, bramAddr, bramDout, bramDin, bramWEN, bramEN); schedule bramWEN CF (read_resp, read_req, write, bramCLK, bramRST, bramAddr, bramDout, bramDin, bramWEN, bramEN); schedule bramEN CF (read_resp, read_req, write, bramCLK, bramRST, bramAddr, bramDout, bramDin, bramWEN, bramEN); schedule read_req C read_req; schedule read_resp C read_resp; schedule write C write; endmodule 1.1 cryptosorter/lib/bsv/BRAMFeeder/src/BRAMInitiator.v http://www.opencores.org/cvsweb.shtml/cryptosorter/lib/bsv/BRAMFeeder/src/BRAMInitiator.v?rev=1.1&content-type=text/x-cvsweb-markup Index: BRAMInitiator.v =================================================================== /* Copyright (c) 2007 MIT Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. Author: Kermin Fleming */ module BRAMInitiator(CLK, RST_N, RD_ADDR, RD_RDY, RD_EN, DOUT, DOUT_RDY, DOUT_EN, WR_ADDR, WR_VAL, WR_EN, BRAM_Addr, BRAM_Dout, BRAM_Din,BRAM_Dummy_Enable, BRAM_WEN, BRAM_EN, BRAM_RST, BRAM_CLK); // synopsys template parameter addr_width = 1; input CLK; input RST_N; // Read Port // req input [addr_width -1 : 0] RD_ADDR; input RD_EN; output RD_RDY; // resp output [31 : 0] DOUT; output DOUT_RDY; input DOUT_EN; // Write Port // req input [addr_width - 1 : 0] WR_ADDR; input [31 : 0] WR_VAL; input WR_EN; // BRAM Wires output [addr_width - 1 : 0] BRAM_Addr; output [31 : 0] BRAM_Dout; input [31 : 0] BRAM_Din; input BRAM_Dummy_Enable; output [3 : 0] BRAM_WEN; output BRAM_EN; output BRAM_RST; output BRAM_CLK; // Assignments assign BRAM_CLK = CLK; assign BRAM_EN = RST_N; // disable the BRAM if we are in reset assign BRAM_RST = 1'b0; // Never reset the BRAM. assign BRAM_Addr = (WR_EN)?(WR_ADDR):(RD_ADDR); assign BRAM_WEN = {WR_EN,WR_EN,WR_EN,WR_EN}; assign BRAM_Dout = WR_VAL; reg RD_REQ_MADE; reg [1:0] CTR; /*always@(BRAM_Din) $display("BRAMInitiator.v BRAM_Din: %x",BRAM_Din); */ FIFO2#(.width(32)) q(.RST_N(RST_N), .CLK(CLK), .D_IN(BRAM_Din), .ENQ(RD_REQ_MADE), .DEQ(DOUT_EN), .CLR(1'b0), .D_OUT(DOUT), .FULL_N(), .EMPTY_N(DOUT_RDY)); assign RD_RDY = (CTR > 0); always@(posedge CLK) begin if (!RST_N) begin CTR <= 2; end else begin /*if(RD_EN) $display("BRAMInitiator: RD_EN"); if(WR_EN) $display("BRAMInitiator: WR_EN"); */ RD_REQ_MADE <= RD_EN; CTR <= (RD_EN) ? (DOUT_EN) ? CTR : CTR - 1 : (DOUT_EN) ? CTR + 1 : CTR; end end // always@ (posedge CLK) endmodule 1.1 cryptosorter/lib/bsv/BRAMFeeder/src/BRAMInitiatorWires.bsv http://www.opencores.org/cvsweb.shtml/cryptosorter/lib/bsv/BRAMFeeder/src/BRAMInitiatorWires.bsv?rev=1.1&content-type=text/x-cvsweb-markup Index: BRAMInitiatorWires.bsv =================================================================== /* Copyright (c) 2007 MIT Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. Author: Kermin Fleming */ interface BRAMInitiatorWires#(type idx_type); (* always_ready, always_enabled, prefix="" *) method Bit#(1) bramCLK(); (* always_ready, always_enabled, prefix="" *) method Bit#(1) bramRST(); (* always_ready, always_enabled, prefix="" *) method idx_type bramAddr(); (* always_ready, always_enabled, prefix="" *) method Bit#(32) bramDout(); (* always_ready, always_enabled, prefix="" *) method Action bramDin(Bit#(32) din); (* always_ready, always_enabled, prefix="" *) method Bit#(4) bramWEN(); (* always_ready, always_enabled, prefix="" *) method Bit#(1) bramEN(); endinterface 1.1 cryptosorter/lib/bsv/BRAMFeeder/src/mkBRAMFeeder.sched http://www.opencores.org/cvsweb.shtml/cryptosorter/lib/bsv/BRAMFeeder/src/mkBRAMFeeder.sched?rev=1.1&content-type=text/x-cvsweb-markup Index: mkBRAMFeeder.sched =================================================================== === Generated schedule for mkBRAMFeeder === Method schedule --------------- Method: ppcMessageInput_put Ready signal: ppcMesgQ.i_notFull && ppcMesgQ.notFull Conflict-free: bramInitiatorWires_bramCLK, bramInitiatorWires_bramRST, bramInitiatorWires_bramAddr, bramInitiatorWires_bramDout, bramInitiatorWires_bramDin, bramInitiatorWires_bramWEN, bramInitiatorWires_bramEN Sequenced before (restricted): ppcMessageOutput_get Conflicts: ppcMessageInput_put Method: ppcMessageOutput_get Ready signal: ppcInstQ.notEmpty && ppcInstQ.i_notEmpty Conflict-free: bramInitiatorWires_bramCLK, bramInitiatorWires_bramRST, bramInitiatorWires_bramAddr, bramInitiatorWires_bramDout, bramInitiatorWires_bramDin, bramInitiatorWires_bramWEN, bramInitiatorWires_bramEN Sequenced after (restricted): ppcMessageInput_put Conflicts: ppcMessageOutput_get Method: bramInitiatorWires_bramCLK Ready signal: True Conflict-free: ppcMessageInput_put, ppcMessageOutput_get, bramInitiatorWires_bramCLK, bramInitiatorWires_bramRST, bramInitiatorWires_bramAddr, bramInitiatorWires_bramDout, bramInitiatorWires_bramDin, bramInitiatorWires_bramWEN, bramInitiatorWires_bramEN Method: bramInitiatorWires_bramRST Ready signal: True Conflict-free: ppcMessageInput_put, ppcMessageOutput_get, bramInitiatorWires_bramCLK, bramInitiatorWires_bramRST, bramInitiatorWires_bramAddr, bramInitiatorWires_bramDout, bramInitiatorWires_bramDin, bramInitiatorWires_bramWEN, bramInitiatorWires_bramEN Method: bramInitiatorWires_bramAddr Ready signal: True Conflict-free: ppcMessageInput_put, ppcMessageOutput_get, bramInitiatorWires_bramCLK, bramInitiatorWires_bramRST, bramInitiatorWires_bramAddr, bramInitiatorWires_bramDout, bramInitiatorWires_bramDin, bramInitiatorWires_bramWEN, bramInitiatorWires_bramEN Method: bramInitiatorWires_bramDout Ready signal: True Conflict-free: ppcMessageInput_put, ppcMessageOutput_get, bramInitiatorWires_bramCLK, bramInitiatorWires_bramRST, bramInitiatorWires_bramAddr, bramInitiatorWires_bramDout, bramInitiatorWires_bramDin, bramInitiatorWires_bramWEN, bramInitiatorWires_bramEN Method: bramInitiatorWires_bramDin Ready signal: True Conflict-free: ppcMessageInput_put, ppcMessageOutput_get, bramInitiatorWires_bramCLK, bramInitiatorWires_bramRST, bramInitiatorWires_bramAddr, bramInitiatorWires_bramDout, bramInitiatorWires_bramDin, bramInitiatorWires_bramWEN, bramInitiatorWires_bramEN Method: bramInitiatorWires_bramWEN Ready signal: True Conflict-free: ppcMessageInput_put, ppcMessageOutput_get, bramInitiatorWires_bramCLK, bramInitiatorWires_bramRST, bramInitiatorWires_bramAddr, bramInitiatorWires_bramDout, bramInitiatorWires_bramDin, bramInitiatorWires_bramWEN, bramInitiatorWires_bramEN Method: bramInitiatorWires_bramEN Ready signal: True Conflict-free: ppcMessageInput_put, ppcMessageOutput_get, bramInitiatorWires_bramCLK, bramInitiatorWires_bramRST, bramInitiatorWires_bramAddr, bramInitiatorWires_bramDout, bramInitiatorWires_bramDin, bramInitiatorWires_bramWEN, bramInitiatorWires_bramEN Rule schedule ------------- Rule: inStartPush Predicate: state == 4'd7 Blocking rules: (none) Rule: inStartWrite Predicate: bramInit_bramFlat.RDY_read_resp && ppcMesgQ.i_notEmpty && (state == 4'd6) Blocking rules: ppcMessageInput_put Rule: inStartCheckWrite Predicate: bramInit_bramFlat.RDY_read_req && (state == 4'd5) Blocking rules: (none) Rule: inStartTake Predicate: bramInit_bramFlat.RDY_read_resp && ppcInstQ.i_notFull && (state == 4'd4) Blocking rules: ppcMessageInput_put Rule: inStartRead Predicate: bramInit_bramFlat.RDY_read_resp && bramInit_bramFlat.RDY_read_req && (state == 4'd3) Blocking rules: (none) Rule: inStartCheckRead Predicate: bramInit_bramFlat.RDY_read_req && (state == 4'd2) Blocking rules: (none) Rule: inStartIdle Predicate: state == 4'd1 Blocking rules: (none) Rule: beat Predicate: (! (heartbeat == 30'd1073741823)) || ppcMesgQ.i_notFull Blocking rules: ppcMessageInput_put Logical execution order: bramInitiatorWires_bramEN, bramInitiatorWires_bramWEN, bramInitiatorWires_bramDin, bramInitiatorWires_bramDout, bramInitiatorWires_bramAddr, bramInitiatorWires_bramRST, bramInitiatorWires_bramCLK, inStartRead, inStartIdle, ppcMessageInput_put, inStartPush, inStartWrite, ppcMessageOutput_get, inStartCheckWrite, inStartTake, inStartCheckRead, beat ============================================

     
    Copyright (c) 1999 OPENCORES.ORG. All rights reserved.