P1076 October 6, 2016 Meeting Minutes

Attendees:

  • Brent Hayhoe, Lieven Lemiengre, Kevin Jennings, Patrick Lehmann, Rob Gaddi, Jim Lewis, Peter Flake, Jing Pang

Agenda:

Meeting Discussion

  • Interfaces - continue.
  • AI: Jim talk to vendors about space ship operator and its implementation.
  • AI: What ranked proposal do you want to work on.
    • If you are working on an LCS, change the name of the item to your name.
    • Change status to LCS in progress.
  • By December, need LCS for proposals that will go into standard.
  • December to March - prepare final document.

Reviewed Rob's AXI Interfaces implementation. See https://gitlab.com/IEEE-P1076/Interfaces/blob/axi4/AXI4.vhdl

See Patrick Lehmann's post about getting a GitLab account.

Filled in the details of the map function

    map axil_addr_remap(
        bundle mst : b_axil_mst t_axil;
        constant slv_addr_width : positive
    ) to b_axil_slv is
    begin
        -- These are elaboration time assertions, not run time.
        assert slv.wa'length <= mst_addr_width
            report "Slave address wider than master.";
        assert slv.wa'length == slv.ra'length
            report "Slave read/write addresses do not match.";
        
        map (
          wa => map (
             addr => mst.wa.addr(slv_addr_width-1 downto 0),
             hs   => mst.wa.hs,
             prot => mst.wa.prot
          ),
          wd => mst.wd,
          wb => mst.wb,
          ra => map (
            addr => mst.ra.addr(slv_addr_width-1 downto 0),
            hs   => mst.ra.hs,
            prot => mst.ra.prot
          ),
          rd => mst.rd
        );
    end map function axil_addr_remap;

Worked on how to handle top level connections

entity tb_axil is
end entity tb_axil;

architecture Testbench of tb_axil is

    signal clock_and_reset : t_axi_clock := (
      clk => '0',
      resetn => '1'
   );

    signal bus_cpu  : t_axil(
            wa(addr(31 downto 0)),
            ra(addr(31 downto 0))
        );
    signal bus_mem1_r : t_axil(
            wa(addr(9 downto 0)),
            ra(addr(9 downto 0))
        );
    signal bus_mem_r : t_axil(
            wa(addr(21 downto 0)),
            ra(addr(21 downto 0))
        );

    signal gpio : std_logic_vector(15 downto 0);
   
begin

   INST_FAKE_RESET : process
   begin
      clock_and_reset.resetn <= '0', '1' after 50 ns;
      wait;
   end process;

   INST_FAKE_CLOCK : process
   begin
      clock_and_reset.clk <= not clock_and_reset.clk after 10 ns;
   end process;
   
   -- How to tackle the issue of connecting clock to the three busses
    -- Option 1: Space ship operator   
   bus_cpu.clk  <=> clock_and_reset;
   bus_mem1.clk <=> clock_and_reset;
   bus_mem2.clk <=> bus_cpu.clk;
   
   -- Equivalent forms
   bus_cpu.clk  <=> clock_and_reset2;
   clock_and_reset2 <=> bus_cpu.clk;
   
    -- Option 2:  Mapping option 1
    INST_CPU : entity work.axil_cpu
        port map (
            axi => map(
               clk => clock_and_reset
               others => bus_cpu
            ),
            gpio => gpio
        );
    
    -- Option 2:  Mapping option 2
    INST_CPU : entity work.axil_cpu
        port map (
            axi => map(
               clk => clock_and_reset
               others => bus_cpu
            ),
            gpio => gpio
            clk_and_reset => clk_and_reset
        );
            
   -- Option 3:  Do bus expansion at interface, however, defers issue to having to do space ship operator or other inside
   INST_CLK_RESET : entity work.clk_reset_blk
       generic map (NUM_AXI => 3) ;
       port map (
         A(0) => bus_cpu.clk,
         A(1) => bus_mem1.clk,
         A(2) => bus_mem2.clk
         
         clk => clk,
         rst => rst
       ) ; 
        
    INST_INTERCON : entity work.axil_interconnect
        port map (
            cpu => map( -- view is slave 
               clk => clock_and_reset
               others => bus_cpu
            ),    
            mem1 => bus_mem1,  -- view is master
            mem2 => bus_mem2
            clk_and_reset => clk_and_reset
        );
        
    INST_MEM1 : entity work.axil_mem_slave
        generic map (
            ADDR_WIDTH => 10
        ) port map (
            axi => mem1
            clk_and_reset => clk_and_reset
        );
        
    INST_MEM2 : entity work.axil_mem_slave
        generic map (
            ADDR_WIDTH => 22
        ) port map (
            axi => mem2
            clk_and_reset => clk_and_reset
        );

end architecture Testbench;

Review and Approve Meeting Minutes and Decisions by Attendees

Kevin, Rob

Review and Approve Meeting Minutes and Decisions by non-attendees

-- ThomasPreusser - 2016-10-07

Great work! I am really hoping for the spaceship. In the end, it is just another way of defining an alias. So, I do not see why it should be impossible.
A few minor comments:

  • The implementation of the map function seems to lack the keyword function in its header.
  • The result of the function is computed by a map statement. What differentiates this type of statement from a return? The latter appears to be the more natural choice for a function.
  • In a port declaration of an entity: Why must bundles be annotated with the keyword bundle when they have a bundle mode anyways? Maybe, this should be an optional feature, which goes along with optionally annotating classic ports as signals?

-- MartinZabel - 2016-10-07

Just a comment: I think, on INST_INTERCON it should be only cpu > bus_cpu because =clk_and_reset is provided through another port.

-- PatrickLehmann - 2016-10-12

A "map function" is no function, because a (normal) function implies a unidirectional assignment. For now, "map function" is a working title. Because the "map function" is no function, return statements cann't be used to compute the result of a mapping operations, which is bidirectional. A bundle itself is no mode like in, out or inout. It was discussed, but does not apply to the current ideas for a solution.

Next Meeting: Thursday October 13, 2016, 11 am Pacific

Previous Meeting: Thursday September 29, 2016

Topic revision: r7 - 2020-02-17 - 15:36:17 - JimLewis
 
Copyright © 2008-2024 by the contributing authors. All material on this collaboration platform is the property of the contributing authors.
Ideas, requests, problems regarding TWiki? Send feedback